使用带有 Python/Pyserial 的 C/C++ DLL 与 Opticon 条码阅读器进行通信

Posted

技术标签:

【中文标题】使用带有 Python/Pyserial 的 C/C++ DLL 与 Opticon 条码阅读器进行通信【英文标题】:Using C/C++ DLL with Python/Pyserial to communicate with Opticon barcode reader 【发布时间】:2014-10-08 13:52:19 【问题描述】:

我有一个我试图与之通信的光学 OPN-2001 条形码扫描仪。 它正式支持 C/C++ 和 .NET,但如果可能的话,我想将它与 python 一起使用。

我已经打开了到设备的串行连接(或者至少是端口(?),但是当我使用 dll 中的函数时,当我期待正常 (0) 时,它给了我通信错误 (-1)。 我从未使用过 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

【问题讨论】:

【参考方案1】:

Windows 会锁定串行端口。如果不查看 SDK,我会猜测 csp2InitEx 会尝试打开串行端口本身,当它这样做时,它会从 Windows 收到错误并失败。

尽量不要自己打开串口。

【讨论】:

嗯,你是对的。在使用 DLL 之前没有用 PySerial 打开它,我收到了 OK。以前应该试过的,呵呵。现在看看我还能用这个做什么。谢谢。

以上是关于使用带有 Python/Pyserial 的 C/C++ DLL 与 Opticon 条码阅读器进行通信的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python(pyserial)向华为E3272 Hilink发送AT命令?

Python PySerial.How 知道一个端口是不是已经打开?

Python PySerial,如何打开串口?

GNU/Linux - Python3 - PySerial:如何通过 USB 连接发送数据?

python pyserial readline 不工作,但 screen 有点工作,在 ubuntu 16 中工作

带有/不带有编译器的 C/C++ IDE [关闭]