Linux 使用usb串行转换器通过mac os x与电源交谈

Linux 使用usb串行转换器通过mac os x与电源交谈,linux,macos,usbserial,Linux,Macos,Usbserial,我正试图通过我的mac OS X Yosemite与电源通话。该代码在linux机器上运行良好,但当我在mac上尝试时,它不起作用。我正在使用usb串行转换器,并已下载PL-2303驱动程序。驱动程序在my/dev文件夹中显示为cu.usbserial和tty.usbserial 我的代码中失败的部分: fd = initserial("/dev/cu.usbserial"); int initserial(char port[]) { struct termios shimtermios

我正试图通过我的mac OS X Yosemite与电源通话。该代码在linux机器上运行良好,但当我在mac上尝试时,它不起作用。我正在使用usb串行转换器,并已下载PL-2303驱动程序。驱动程序在my/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);
}
如果您对linux/unix问题有任何经验,请告诉我。非常感谢你

有关可用于c_iflag、c_oflag、c_cflag和c_lflag的有效掩码,请参阅。您应该将这些或掩码常量放在一起,而不是硬编码这些值


同样从经验来看,FTDI USB串行转换器在OSX上的工作性能往往比pl2303更好。OS X为这些AppleUSBFTDI提供了一个内置驱动程序。

这些标志值应该代表什么?我很确定在不同的操作系统中,精确的值是不匹配的。抱歉,我实际上不知道……代码很旧,而且来自其他人,他们也不记得标志代表什么。现在,我的代码通过initserial函数执行,但由于某种原因,读取和写入电源电流时遇到问题。代码while*命令!='\0'writefd,command++,1;printfhere1\n;当读取数据时\n'{printfcomeon\n;readfd,&read_data,1;printf%s,read_data;}
couldn't set terminal attributes
: Invalid argument