【问题标题】:Cannot open tty usb port file or su usb port file on Mac无法在 Mac 上打开 tty usb 端口文件或 su usb 端口文件
【发布时间】:2013-06-18 00:30:14
【问题描述】:

我正在编写一些 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,好像是一样的。

有人有什么想法吗?谢谢。

【问题讨论】:

  • 你有没有试过其他的open功能? open 应该进行错误检查。 if(open("file",O_RDWR) == NULL)
  • 当您尝试打开该端口时,请确保该端口未被其他应用程序使用。还要在 fd 上添加检查错误。

标签: c macos serial-port arduino tty


【解决方案1】:

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

或者不。这是我不久前破解的一个简单代码,用于刷新串行设备:

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

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

  • minicom(但使用/配置有点奇怪)
  • screen /dev/tty.usbmodem1411 115200
  • python -m serial.tools.miniterm /dev/tty.usbmodem1411 115200

【讨论】:

  • 非常感谢。你的帮助让我知道了更多的事情。现在 tty 端口仍然无法工作,但 cu 端口实际运行。我查了一些关于它们之间区别的信息。所以目前对于arduino,使用任何一个端口都没有区别。是吗?
  • 确实,Arduino 串行连接和任何其他串行连接没有区别。
  • cu和tty有什么区别。我认为这里没有区别。是吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-29
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多