python - 使用 Python 进行 MEI 现金验证器编程
问题描述
我正在尝试使用 Python 与 MEI Advance Cash Validator 进行通信,但到目前为止还没有成功。我正在使用pyserial
库,机器连接到 COM 端口。另外,我正在 Ubuntu 18 下编程。
我发送到机器的任何内容都会被忽略,我没有回复。我正在尝试遵循官方文档,它说格式应如下所示: STX (0x02) - 消息的开头 Length - 消息中的字节数 Message Type Data Fields EXT (0x03) - 消息的结尾校验和 - 异或校验和
这是我尝试的:
ser = serial.Serial(
port='/dev/ttyS0',
baudrate = 9600,
#parity=serial.PARITY_ODD,
#stopbits=serial.STOPBITS_TWO,
bytesize=serial.SEVENBITS
)
def send(msg,ser):
r = chr(0x02)
r += "".join([chr(i) for i in msg])
check = 0
for a in msg:
check = check^a
r += chr(0x03)
r += chr(check)
print("Sending", r.encode())
ser.write(r.encode())
m1 = [0x08,0x10,0x1F,0x14,0x00] #1F
m2 = [0x08,0x11,0x1F,0x15,0x00]
for i in range(5):
send(m1, ser)
send(m2, ser)
time.sleep(1)
out = 0
while ser.inWaiting() > 0:
print(ser.read(1),end="")
out += 1
if out > 0:
print()
ser.close()
结果是:
/home/timur/local/kmf/venv/bin/python /home/timur/local/kmf/example.py
Sending b'\x02\x08\x10\xc2\x9f\x14\x00\x03\xc2\x93'
Sending b'\x02\x08\x11\xc2\x9f\x15\x00\x03\xc2\x93'
Sending b'\x02\x08\x10\xc2\x9f\x14\x00\x03\xc2\x93'
Sending b'\x02\x08\x11\xc2\x9f\x15\x00\x03\xc2\x93'
Sending b'\x02\x08\x10\xc2\x9f\x14\x00\x03\xc2\x93'
Sending b'\x02\x08\x11\xc2\x9f\x15\x00\x03\xc2\x93'
Sending b'\x02\x08\x10\xc2\x9f\x14\x00\x03\xc2\x93'
Sending b'\x02\x08\x11\xc2\x9f\x15\x00\x03\xc2\x93'
Sending b'\x02\x08\x10\xc2\x9f\x14\x00\x03\xc2\x93'
Sending b'\x02\x08\x11\xc2\x9f\x15\x00\x03\xc2\x93'
Process finished with exit code 0
所以机器根本没有回答任何问题:(
任何帮助将不胜感激!!!
解决方案
推荐阅读
- android - 如何在 Switch/SwitchCompat 按钮中设置宽度和跟踪文本并实现此结果?(附图片和GIF)
- c - .so 文件如何查找符号?
- ios - 我们如何在 swift 4 和 IOS 11 中更改语音识别语言?
- dask - 是否有计划将#Dask 仪表板与 Juoyter 项目集成
- sql - 对某些分组行求和
- javascript - 在 React 中更新对象数组的几个属性(onClick={在 setState 上将摄氏更改为华氏})
- sql-server - 使用 sql server 解析嵌套的 xml
- javascript - 如何从引导 datepicker 输出 iso 周和年?
- ios - iOS 应用因使用 WhatsApp 而被拒绝
- javascript - 服务人员没有被承诺不知道在哪里