gpt4 book ai didi

python - PC通过rs232发送数据到POS

转载 作者:行者123 更新时间:2023-12-01 07:29:10 33 4
gpt4 key购买 nike

我有一个销售点,我尝试通过 rs232 将卡收取的金额发送到 POS。但不起作用,而且我不理解文档。

我尝试完全按照文档示例发送,但 POS 停留在 PROCESSING 状态并返回 02 = error 。如果我发送良好的 POS 显示金额并等待触摸卡,但在我的情况下 POS 返回菜单。

我的脚本:

import serial
import crc16
import time

port =serial.Serial("COM7")
port.close()
port.open()

print(port.isOpen())

print("Port opened...")

if True:
port.write(b'\x05')
response = port.read()
print(ord(response))
if response is not None:
fdata = b'\x02 00 04 a0 00 01 01 03 06 35'
port.write(fdata)
print(ord(port.read()))

文档:

enter image description here

示例文档:

enter image description here

就我而言,POS 答案:

SEND : 05
RECEIVE : 06
SEND : 02 00 04 a0 00 01 01 03 06 35
RECEIVE : 02

最佳答案

您的问题在这一行:

fdata = b'\x02 00 04 a0 00 01 01 03 06 35'

写入字节流的正确方法是:

fdataok = b'\x02\x00\x04\xa0\x00\x01\x01\x03\x06\x35'

您可以自行验证:

>>> fdata == fdataok
False

您可能遇到的另一个问题是您可能在发送完数据之前正在读取数据。默认情况下,您应该会阻止写入,但您可能需要在定义端口时添加 writeTimeout 以确保完全确定。

您的代码中还有最后一个基本缺陷:您使用 port.read() 仅读取一个字节,您需要将其替换为 port.read(port. inWaiting())port.read(x) ,其中 x 是预期的字节数(您不需要精确,只需瞄准比您预期的数字要高)。读取超时可能也是一个好主意。

关于python - PC通过rs232发送数据到POS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57297165/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com