2

我正在编写一些 C 代码来从 arduino 获取消息,我使用的端口是 tty.usbmodem1411,它可以很好地将代码刻录到 arduino 板。但是,在编写 C 代码时

#include <sys/types.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>

int main(){
    int fd = open("/dev/tty.usbmodem1411", O_RDWR);
    printf("open\n");

这段代码可以编译,但在运行时,甚至“打开”也无法显示。程序卡在开放线上。

我使用命令 chmod 777 和 chown 和 chgrp 来更改文件的权限,但它仍然不起作用。而且我也不能使用命令

cat /dev/tty.usbmodem1411

它只是被阻止了,什么也没发生。我已经在线检查并将端口更改为 cu.usbmodem1411 似乎相同。

有人有一些想法吗?谢谢你。

4

1 回答 1

2

好吧,串行端口不像任何文件。您必须在文件上设置一堆控件,以便正确设置它(还记得奇偶校验/速度等吗?)。您可以使用termios设置来做到这一点,这是 stackoverflow 上的第一个结果:

或不。这是一个简单的代码,我破解了一段时间来刷新串行设备:

我不得不修补原始项目中的一些东西以使其在 OSX 上运行,它可能对你有用。

并且要打开 tty chardev,您不应使用 cat,它只会尽可能快地输出内容(在最好的情况下不会输出任何内容,在最坏的情况下会扰乱您的终端)。相反,您应该使用:

  • minicom(但使用/配置有点奇怪)
  • screen /dev/tty.usbmodem1411 115200
  • python -m serial.tools.miniterm /dev/tty.usbmodem1411 115200
于 2013-06-18T21:01:52.590 回答