使用usb-serial转换器通过mac os x与电源通信

时间:2015-09-02 01:37:49

标签: 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问题有任何经验,请告诉我。非常感谢你!

1 个答案:

答案 0 :(得分:0)

有关可用于=ISNUMBER(SEARCH("SHIPPED",AM11))=FALSEc_iflagc_oflagc_cflag的有效掩码,请参阅termios man page。你应该将掩码常量加在一起,而不是对值进行硬编码。

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