我正在开发一个项目,使用从POS系统发送到收据打印机的交易数据来控制几台电机。我使用连接到Raspberry Pi和热敏打印机的串行电缆分配器来分离串行通信。
为了测试系统,我创建了一个简单的POS系统,它将ESC命令发送到EPSON TM-T20II打印机。树莓派能够读取发送到打印机的所有信息,没有错误。
但是,当我在我的餐厅使用Posiflex POS系统安装相同的设置时,会出现问题。当我尝试读取传入的数据时,除了几个奇怪的命令之外我什么都得不到。我检查了Posiflex PP8000打印机设置,我能够确认(DIP开关)串行设置为9600 bps,无奇偶校验,8个数据位,1个停止位。代码的阅读部分非常简单:
ser = serial.Serial('/dev/ttyAMA0', 9600, parity = serial.PARITY_NONE, timeout=1)
While True:
data = ser.read(1)
bytesToRead = ser.inWaiting()
if bytesToRead:
data = data + ser.read(bytesToRead)
encodedData = data.encode('hex')
如果pi没有读取来自其他POS设置的所有数据,我错过了什么?如果发送的数据使用相同的RS232协议,我不应该只读取十六进制转储,无论命令的协议如何(如果不是ESC或Raster)