UBシリーズ リレー出力ボード Pythonサンプルプログラム
ソフトウェアマニュアルにPythonのサンプルコードは記載しておりません。また、ソフトウェアパックにもPythonのサンプルプログラムは含まれておりませんので、Pythonで使用される場合は以下を参考にしてください。
サンプルプログラム
import sys
import platform
import ctypes
# エラーコード(戻り値)
YDCI_RESULT_SUCCESS = 0 # 正常終了
# YdciOpen
YDCI_OPEN_NORMAL = 0 # 通常オープン
YDCI_OPEN_OUT_NOT_INIT = 0x01 # 出力初期化しない
# DLL
pf = platform.system()
if pf == 'Windows':
ydci = ctypes.windll.Ydci
elif pf == 'Linux':
ydci = ctypes.CDLL('libydci.so')
# ボード識別スイッチが0のボードをオープンします
board_id = ctypes.c_ushort()
result = ydci.YdciOpen(0, b'RLY-P4/2/0B-UBT',
ctypes.byref(board_id), YDCI_OPEN_NORMAL)
if result != YDCI_RESULT_SUCCESS:
print('オープンできません')
sys.exit()
# IN1の入力
input_data = ctypes.c_ubyte()
input_no = 1
result = ydci.YdciDioInput(board_id, ctypes.byref(input_data), input_no, 1)
if result == YDCI_RESULT_SUCCESS:
print('IN{}: {}'.format(input_no, input_data.value))
# IN0-1の入力
input_data = (ctypes.c_ubyte * 2)()
result = ydci.YdciDioInput(board_id, ctypes.byref(input_data), 0, 2)
if result == YDCI_RESULT_SUCCESS:
for i, d in enumerate(input_data):
print('IN{}: {}'.format(i, d))
# RY3の出力
output_data = ctypes.c_ubyte(1)
result = ydci.YdciRlyOutput(board_id, ctypes.byref(output_data), 2, 1)
# RY1-4の出力
output_data = (ctypes.c_ubyte * 4)(1, 1, 0, 1)
result = ydci.YdciRlyOutput(board_id, ctypes.byref(output_data), 0, 4)
# RY4の出力状態
output_status = ctypes.c_ubyte()
output_no = 3
result = ydci.YdciRlyOutputStatus(board_id, ctypes.byref(output_status),
output_no, 1)
if result == YDCI_RESULT_SUCCESS:
print('RY{}: {}'.format(output_no + 1, output_status.value))
# RY1-4の出力状態
output_status = (ctypes.c_ubyte * 4)()
result = ydci.YdciRlyOutputStatus(board_id, ctypes.byref(output_status), 0, 4)
if result == YDCI_RESULT_SUCCESS:
for i, d in enumerate(output_status):
print('RY{}: {}'.format(i + 1, d))
# ボードをクローズ
result = ydci.YdciClose(board_id)