Использование C / C ++ DLL с Python / Pyserial для связи со считывателем штрих-кода Opticon

У меня есть сканер штрих-кода 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 для сканера, если вы хотите копать глубже

0

Решение

Windows сохраняет блокировку последовательных портов. Не глядя на SDK, я собираюсь догадаться, что csp2InitEx пытается открыть сам последовательный порт, и когда он это делает, он получает ошибку от Windows и завершается ошибкой.

Попробуйте не открывать последовательный порт самостоятельно.

2

Другие решения


По вопросам рекламы [email protected]