我正在构建一个基于 linux 的无现金设备,并尝试通过 UART 直接在自动售货机中实现与 VMC 的通信,而无需额外的硬件适配器在 8 位和 9 位帧数据之间进行转换。
我只使用无现金设备,无意将任何其他外围设备连接到 VMC。
我之前读过有关此问题的问题,其中一些强调需要适配器,另一些则建议可能的 hack 来实现 9 位到 8 位的转换,但仍然找不到确认的工作和稳定的解决方案。
我的问题是,是否有可能(并且可靠)使用纯软件解决方案来实现这一目标?如何?
谢谢
我正在构建一个基于 linux 的无现金设备,并尝试通过 UART 直接在自动售货机中实现与 VMC 的通信,而无需额外的硬件适配器在 8 位和 9 位帧数据之间进行转换。
我只使用无现金设备,无意将任何其他外围设备连接到 VMC。
我之前读过有关此问题的问题,其中一些强调需要适配器,另一些则建议可能的 hack 来实现 9 位到 8 位的转换,但仍然找不到确认的工作和稳定的解决方案。
我的问题是,是否有可能(并且可靠)使用纯软件解决方案来实现这一目标?如何?
谢谢
是的。
第 9 位是控制位。它将显示数据是被解释为地址还是数据。如果您正在与一台设备通信并且只发送数据,那么您希望去掉第 9 位并只查看数据帧。检查并查看它是否始终为零:
If controlBit = 0:
ProcessData(byte)
Else:
print("This is an address: " + byte)
编辑:许多人报告说,由于时间问题,如果没有特殊硬件,您的连接将不稳定。
您可以使用开源代码作为起点,而不是重新发明轮子。 https://github.com/mhaqs/vendiverse/wiki/Programming-the-VMC
这样你就不必一遍又一遍地犯同样的错误。