USB-PC104シリーズ デジタル入出力ユニット Pythonサンプルプログラム
ソフトウェアマニュアルにPythonのサンプルコードは記載しておりません。また、ソフトウェアパックにもPythonのサンプルプログラムは含まれておりませんので、Pythonで使用される場合は以下を参考にしてください。
サンプルプログラム
import sys
import platform
import ctypes
# エラーコード(戻り値)
YDU_RESULT_SUCCESS = 0 # 正常終了
# YduOpen
YDU_OPEN_NORMAL = 0 # 通常オープン
YDU_OPEN_OUT_NOT_INIT = 0x01 # 出力初期化しない
# DLL
pf = platform.system()
if pf == 'Windows':
ydu = ctypes.windll.Ydu
elif pf == 'Linux':
ydu = ctypes.CDLL('libydu.so')
# IDが0に設定されているDIO-16/32A-Uをオープンします
unit_id = 0
result = ydu.YduOpen(unit_id, b'DIO-16/32A-U', YDU_OPEN_NORMAL)
if result != YDU_RESULT_SUCCESS:
print('オープンできません')
sys.exit()
# IN2の入力
input_data = ctypes.c_ubyte()
input_no = 2
result = ydu.YduDioInput(unit_id, ctypes.byref(input_data), input_no, 1)
if result == YDU_RESULT_SUCCESS:
print('IN{}: {}'.format(input_no, input_data.value))
# IN0-15の入力
input_data = (ctypes.c_ubyte * 16)()
result = ydu.YduDioInput(unit_id, ctypes.byref(input_data), 0, 16)
if result == YDU_RESULT_SUCCESS:
for i, d in enumerate(input_data):
print('IN{}: {}'.format(i, d))
# OUT3の出力
output_data = ctypes.c_ubyte(1)
result = ydu.YduDioOutput(unit_id, ctypes.byref(output_data), 3, 1)
# OUT0-9の出力
output_data = (ctypes.c_ubyte * 10)(1, 0, 1, 0, 1, 1, 0, 0, 1, 1)
result = ydu.YduDioOutput(unit_id, ctypes.byref(output_data), 0, 10)
# OUT4の出力状態
output_status = ctypes.c_ubyte()
output_no = 4
result = ydu.YduDioOutputStatus(unit_id, ctypes.byref(output_status),
output_no, 1)
if result == YDU_RESULT_SUCCESS:
print('OUT{}: {}'.format(output_no, output_status.value))
# OUT0-9の出力状態
output_status = (ctypes.c_ubyte * 10)()
result = ydu.YduDioOutputStatus(unit_id, ctypes.byref(output_status), 0, 10)
if result == YDU_RESULT_SUCCESS:
for i, d in enumerate(output_status):
print('OUT{}: {}'.format(i, d))
# クローズ
result = ydu.YduClose(unit_id)