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

标签 python c++ dll barcode-scanner pyserial

我有一个 opticon OPN-2001 条形码扫描器,我正在尝试与之通信。 它正式支持 C/C++ 和 .NET,但我想尽可能将它与 python 一起使用。

我已经打开了到设备的串行连接(或者至少是端口(?),但是当我使用 dll 中的函数时,它给了我通信错误(-1),而我期待的是 OK(0)。 我从未使用过 DLL 或串行通信,所以请记住这一点。

我想知道我在调用 DLL 函数或使用 pyserial 时是否犯了一些明显的错误。我也对其他任何人查看他们的 SDK 非常感兴趣。它似乎期待一个 4 字节长的作为下面的 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

最佳答案

Windows 会锁定串行端口。在不查看 SDK 的情况下,我猜测 csp2InitEx 会尝试自己打开串行端口,并且在这样做时会从 Windows 收到错误消息并失败。

尽量不要自己打开串口。

关于python - 使用带有 Python/Pyserial 的 C/C++ DLL 与 Opticon 条码阅读器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26258640/

相关文章:

c++ - 我们睡着了忙着等待

c++ - 需要 GLIBC 2.7 版本。使用更高版本的 GLIBC 编译 C++ 代码,同时支持更早的 glibc

c++ - 如何 extern 声明 extern "C"变量

c# - 如何在不同的机器上调用dll方法?

python django API身份验证发布请求 - 输出变量在浏览器中显示json字符串,但在打印时不显示

python - 扭曲 - 交互地对函数进行排队

python - 使用 Python 对列中每个唯一值求和、最大值和平均值

javascript - 如何遍历Cheerp/js中的动态命名对象?

c++ - 单例和 .dll 中的 std::thread block

python - 解析 DTD 以揭示元素的层次结构