我正试图通过我的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问题有任何经验,请告诉我。非常感谢你!
答案 0 :(得分:0)
有关可用于=ISNUMBER(SEARCH("SHIPPED",AM11))=FALSE
,c_iflag
,c_oflag
和c_cflag
的有效掩码,请参阅termios
man page。你应该将掩码常量加在一起,而不是对值进行硬编码。
同样根据经验,FTDI USB串行转换器在OS X上的效果往往比pl2303更好。 OS X有一个内置的驱动程序(AppleUSBFTDI)。