2014-10-08 2 views
0

У меня есть сканер штрих-кода opticon OPN-2001, с которым я пытаюсь связаться. Он официально поддерживает C/C++ и .NET, но я хотел использовать его с python, если это возможно.Использование C/C++ DLL с Python/Pyserial для связи с считывателем штрих-кода Opticon

Я открыл последовательное подключение к устройству (или хотя бы порт (?), Но когда я использую функции из dll, он дает мне сообщение об ошибке (-1), когда я ожидаю OK (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 for scanner if you want to dig deeper

ответ

2

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

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

+0

Ну, вы правы. Не открывая его с помощью PySerial перед использованием DLL, я получил OK. Я должен был пробовать это раньше, хе-хе. Теперь посмотрим, что еще я могу с этим сделать. Благодарю. – raecer