接收來自this我複製的例如用於串行端口配置:無限循環從串口
tcgetattr (serialfd, &tty);
cfsetospeed(&tty,B115200);
cfsetispeed(&tty,B115200);
tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8;
tty.c_iflag &= ~IGNBRK;
tty.c_lflag = 0;
tty.c_oflag = 0;
tty.c_cc[VMIN] = 0;
tty.c_cc[VTIME] = 5;
tty.c_iflag &= ~(IXON | IXOFF | IXANY);
tty.c_cflag |= (CLOCAL | CREAD);
tty.c_cflag &= ~(PARENB | PARODD);
tty.c_cflag |= 0;
tty.c_cflag &= ~CSTOPB;
tty.c_cflag &= ~CRTSCTS;
我的實際的代碼是這樣的:
char buf[100];
write(serialfd, "PING", strlen("PING"));
fsync(serialfd);
while (1)
{
read(serialfd, buf, sizeof(buf));
printf("length: %d\n", strlen(buf));
}
在這種情況下,它是印刷length: 6
無限而不停止。當我更改tty.c_cc[VMIN] = 1
和tty.c_cc[VTIME] = 0
它不會讀取(它在read()
中阻止)
我使用debian 6.0.5與usb串行轉換器。我打開串口是這樣的:
serialfd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_SYNC);
read()不產生nul結尾的緩衝區。使用返回值。 – wildplasser 2012-07-16 22:23:12