【发布时间】:2014-04-06 14:14:58
【问题描述】:
我在这个领域有点初学者
我正在使用 Arduino Mega2560 并将其与自动售货机的投币机连接。 投币机运行在名为 MDB(多点总线)的协议上,该协议是 9 位串行的。 我通常会使用 Arduino IDE,但这不适合 9 位串行。因此,我决定使用 c 和 ubuntu 12.04 进行编码。我遇到了一个usart设置功能,它可以bitbash进入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,进行测试,使终端中我输入的8bit二进制数也出现在终端上。
注意:我希望用二进制表示数字的原因是因为我想查看每一位,这样对我来说更有意义
我正在尝试做类似于 Bouni 的 MateDealer 的事情(请参阅 github 存储库) 但他将 Arduino 实现为奴隶,我想实现为主人。 更多关于他的项目here。
谢谢!
【问题讨论】:
标签: c linux serialization serial-port avr-gcc