gpt4 book ai didi

c - 在 linux 中写入串口

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:47:23 26 4
gpt4 key购买 nike

我正在尝试对在某些串行端口(即 ttyS9)上具有电机驱动器的机器人进行编程

通过 cutecom(作为十六进制输入),我可以发送以下输入,这会给我预期的结果:

5aaa0700fffff000

现在我试图用 C 程序实现相同的结果,该程序执行以下操作:

int port9 = open("/dev/ttyS9", O_RDWR | O_NONBLOCK);

char buff[17] = "5aaa0700fffff000";

write(port9, buff, 16);

我还尝试用十六进制值分别初始化 buff:

buff[0] = 0x5;
buff[1] = 0xa;

等等等等

两者都不行。问题出在我的代码中还是驱动程序中?

我使用 gcc 编译,然后使用 sudo 运行它。 open 函数还返回正确的值(无错误)以及写入。

最佳答案

用字符串填充字符数组会将字符转换为它们的 ascii 表示形式,而不是您需要的十六进制。

char buff[17] = "5aaa0700fffff000"; // Incorrect for saving 0x5aaa0700fffff000 to buff

如我所见,你想在串行端口上写入 8 字节 0x5aaa0700fffff000,一个 char 是 8 位(1 字节),你必须发送 8 字节而不是 16,所以代码应该是这样的

buff[0] = 0x5a;
buff[1] = 0xaa;
...
write(port9, buff, 8);

关于c - 在 linux 中写入串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41184715/

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