gpt4 book ai didi

c - 终端输入串口命令,输出Arduino Tx

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:33:53 26 4
gpt4 key购买 nike

我是这个领域的新手

我正在使用 Arduino Mega2560 并将其与自动售货机的投币机连接。投币机运行在称为 MDB(多点总线)的协议(protocol)上,该协议(protocol)是 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 从另一个模块进行测试,这样我在终端上输入的 8 位二进制数也会出现在终端上。

注意:我希望数字以二进制表示的原因是因为我想看到每一位,这样对我来说更有意义

我正在尝试做类似于 Bouni 的 MateDealer 的事情(参见 github 存储库)但他正在将 Arduino 作为奴隶实现,我想作为主人实现。更多关于他的项目 here .

谢谢您!

最佳答案

A) 有两种解决方案:

  • 您通过串行线发送数字的二进制表示,例如“00001111”,然后在 µC 中使用函数 strtoul,该函数将一个 char 数组(在本例中为“00001111”)和base(此处为2)并返回相应的值(此处为0x0F,即16);
  • 您创建自己的终端,它将输入的二进制表示形式转换为十进制表示形式(此处,将“00001111”转换为“16”),发送到使用函数 atoi 获取相应值(此处为 16 或0x0F)

我认为前者会更容易,但会慢一点,而后者可以卸载微 Controller 。

关于c - 终端输入串口命令,输出Arduino Tx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22895225/

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