我已经为 Windows 和 OS X 编写了串行端口访问代码,但在后者上我还没有找到一种方法来打开 DTR 低的端口。(我试图避免重置我的 Arduino。)这是演示问题的 C 代码的最简单版本:
const char *pathname = "/dev/tty.usbmodem411";
….
int main()
{
int fd;
int status;
printf(" STARTING SERIAL PORT PROGRAM \n");
fd = open(pathname, O_RDWR | O_NOCTTY | O_NDELAY);
if (fd != -1) printf(" port successfully opened, fd = %d\n",fd) ;
else
{
printf(" could not open port\n");
return;
}
printf("closing port and quitting app\n");
if (fd !=-1) close(fd);
return 0;
}
我还没有找到任何其他有帮助的 open() 标志。通过 ioctl() 打开端口后,我可以成功地将 DTR 设置为低,但这无济于事,因为 Arduino 在 open() 上重置。
有谁知道如何在 open() 期间保持 DTR 低?这可能是USB驱动程序的功能吗?