linux - 使用 USB 串行转换器通过 mac os x 与电源通信

标签 linux macos usbserial

我正在尝试与我的 mac OS X Yosemite 的电源通信。该代码在 Linux 机器上运行良好,但当我在 Mac 上尝试时,它不起作用。我正在使用 USB 串行转换器并已下载 PL-2303 驱动程序。该驱动程序在我的/dev 文件夹中显示为 cu.usbserial 和 tty.usbserial。

我的代码失败的部分:

fd = initserial("/dev/cu.usbserial");

int initserial(char port[])
{
  struct termios shimtermios;
  int fd;

  if((fd=open(port,O_RDWR)) < 0)  {
    perror("Opening the RS-232 port failed for initserial\n");
    exit(-1);
  }

  if (tcgetattr(fd, &shimtermios) < 0) { 
    perror("couldn't get terminal attributes\n");
    exit(-2);
  }

  shimtermios.c_iflag=012005;
  shimtermios.c_oflag=014004;
  shimtermios.c_cflag=03206276;
  shimtermios.c_lflag=05060;
  cfsetospeed(&shimtermios,B19200);

  if (tcsetattr(fd, TCSAFLUSH, &shimtermios) < 0) {
    perror("couldn't set terminal attributes\n");
    exit(-3);
  }
  return (fd);
}

我收到以下错误消息

couldn't set terminal attributes
: Invalid argument

如果您对这个 linux/unix 问题有任何经验,请告诉我。非常感谢!

最佳答案

请参阅termios man page可用于 c_iflagc_oflagc_cflagc_lflag 的有效掩码)。您应该将掩码常量组合在一起,而不是对值进行硬编码。

根据经验,FTDI USB 串行转换器在 OS X 上的运行效果往往比 pl2303 更好。 OS X 有一个内置的驱动程序 (AppleUSBFTDI)。

关于linux - 使用 USB 串行转换器通过 mac os x 与电源通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32343365/

相关文章:

objective-c - dyld 未加载问题 xcode 4

python - 如何为 python 3 创建一个空列表?

c++ - 使用 C++ 在 Ubuntu 中从串口读取数据到 USB

linux - 我们如何连接 Linux 中不包括目录的所有文件?

java - 开始制作自己的基于 Android 的媒体中心的好方法

python - 有没有办法让 python 包 psutil 检测 Debian/Ubuntu 和 OSX 上未安装的设备

java - python 中的索引错误

linux - Tomcat 7 使用 JDK 7 突然关闭

linux - 如何让 Log4perl 每天轮换我的日志?

c - 从串行端口读取十六进制数据数组字节值