LINUX环境下,使用多线程读写串口:
普通串口 MODEMDEVICE "/dev/ttyS0"
USB转串口MODEMDEVICE "/dev/ttyUSB0"
获取串口控制权限, sudo chmod 666 /dev/ttyUSB0
使用特殊设定,实现任意自定义波特率,例如B256000 B460800等等。
// 设置为特殊波特率,比如200000, 这个设置方法在虚拟机环境下不能通过,需要在真正的UBUNTU环境下才可以^_^
int set_anybaud(int fd, int baud)
{
int status;
struct termios Opt;
struct serial_struct Serial;
tcgetattr(fd, &Opt);
tcflush(fd, TCIOFLUSH);
printf("\ncfsetispeed(&Opt,B38400)\n");
cfsetispeed(&Opt, B38400);
cfsetospeed(&Opt, B38400);
tcflush(fd, TCIOFLUSH);
status = tcsetattr(fd, TCSANOW, &Opt);
if (status != 0)
{
perror("tcsetattr fd1");
return -1;
}
if ((ioctl(fd, TIOCGSERIAL, &Serial)) < 0)
{
printf("Fail to get Serial!\n");
return -2;
}
Serial.flags = ASYNC_SPD_CUST;
Serial.custom_divisor = Serial.baud_base / baud;
printf("分频系数 %x\n", Serial.custom_divisor);
if ((ioctl(fd, TIOCSSERIAL, &Serial)) < 0)
{
printf("分频设置: ERROR\n");
return -3;
}
printf("分频设置: OK.\n");
ioctl(fd, TIOCGSER