У меня есть сканер штрих-кода opticon OPN-2001, с которым я пытаюсь связаться.
Он официально поддерживает C / C ++ и .NET, но я хотел использовать его с Python, если это возможно.
Я открыл последовательное соединение с устройством (или, по крайней мере, с портом (?), Но когда я использую функции из dll, это дает мне ошибку связи (-1), когда я ожидаю ОК (0).
Я никогда не использовал DLL или последовательную связь, так что имейте это в виду.
Что мне интересно, так это то, что я допустил некоторые очевидные ошибки при вызове DLL-функции или использовании pyserial. Я также очень заинтересован в том, чтобы кто-нибудь еще посмотрел на их SDK. Кажется, ожидается 4-байтовое LONG, как comPort ниже. Я думал, что это сработает, поэтому я немного застрял. Я понимаю, что есть только так много, что вы можете помочь без реального оборудования. Спасибо за любую помощь, однако!
Вот код, который у меня есть:
from ctypes import *
from serial import *
opticonLib = WinDLL('Csp2.dll')
opticonLib.csp2SetDebugMode(1) #logs to textfile if using debug version of .dll
comPort = 3
opticonSerial = Serial(
port=comPort - 1,
baudrate=9600,
bytesize=EIGHTBITS,
parity=PARITY_ODD,
stopbits=STOPBITS_ONE,
timeout=5
)
if opticonSerial.isOpen():
print ('Port is open. Using ' + opticonSerial.name + '.')
print (opticonLib.csp2InitEx(comPort)) #Gives -1 instead of 0
opticonSerial.close()
SDK для сканера, если вы хотите копать глубже
Windows сохраняет блокировку последовательных портов. Не глядя на SDK, я собираюсь догадаться, что csp2InitEx пытается открыть сам последовательный порт, и когда он это делает, он получает ошибку от Windows и завершается ошибкой.
Попробуйте не открывать последовательный порт самостоятельно.