我在这个领域有点初学者
我正在使用Arduino Mega2560并将其与自动售货机上的投币机连接。 硬币机运行在称为MDB(多点总线)的协议上,该协议是9位串行的。 我通常会使用Arduino IDE但不适合9位串口。因此我决定使用c和ubuntu 12.04进行编码。我遇到了一个usart设置功能,它可以进入9位模式。 我安装了avr-gcc avr-libc avrdude。
投币机根据收到的串行数据行事。即重置它需要从其Rx读取100101010(这是一个随机的9位数字,我不知道此时的真实数字是多少)。 另一个例子是,如果它在Rx上收到10101111,它将分配所需类型的硬币等。 还有其他各种命令,如ack,poll等。 所以我想做的是从Arduino的Tx发送适当的二进制数字到硬币机的Rx中,并尝试与投币机进行通信。
这只是针对上下文,但我的主要问题是更一般(假设我们正在以8位模式工作):
a)如何在终端上键入8位二进制数(例如10111010),并将该数字放在arduno的Tx行上。 b)由于mega2560有3个Tx / Rx模块,我可以从一个模块Tx和另一个模块的Rx进行测试,这样终端上的8位二进制数字I也会出现在终端上。
注意:我希望数字以二进制表示的原因是因为我想看到每一位,这对我来说更有意义
我正在尝试做类似于Bouni' MateDealer的事情(参见github存储库) 但他正在实施Arduino作为奴隶,我想作为主人实施。 更多关于他的项目here。
谢谢你!
答案 0 :(得分:0)
A)有两种解决方案:
我认为前者会更容易,但速度会慢一些,而后者可以卸载微控制器。