serialPort = open("/dev/ttyUSB0", O_RDWR|O_NOCTTY|O_NONBLOCK | FNDELAY); // 打开串口设备
if (serialPort == -1)
{
perror("无法打开串口");
return -1;
}
// struct termios tty;
// tcgetattr(serialPort, &tty);
struct termios oldtio = { 0 };
struct termios newtio = { 0 };
tcgetattr(serialPort, &oldtio);
// 配置串口参数
// cfsetispeed(&tty, B115200); // 设置波特率为9600
// tty.c_cflag &= ~PARENB;
// tty.c_cflag &= ~CSTOPB;
// tty.c_cflag &= ~CSIZE;
// tty.c_cflag |= CS8;
// tcsetattr(serialPort, TCSANOW, &tty);
newtio.c_cflag = 115200|CS8|CLOCAL|CREAD;
newtio.c_iflag = 0; // IGNPAR | ICRNL
newtio.c_oflag = 0;
newtio.c_lflag = 0; // ICANON
newtio.c_cc[VTIME] = 0; /* inter-character timer unused */
newtio.c_cc[VMIN] = 1; /* blocking read until 1 character arrives */
tcflush(serialPort, TCIOFLUSH);
tcsetattr(serialPort, TCSANOW, &newtio);
读写记录:
void bytesRead_fun()
{
char buffer[255];
if(serialPort!=-1){
int bytesRead = read(serialPort, buffer, sizeof(buffer));
if (bytesRead > 0)
{
// 处理接收到的数据
//printf("接收到%d个字节: %s\n", bytesRead, buffer);
//qDebug()<<"bytesRead_fun";
rbWrite(&pRb_set_fifo, &buffer[0], bytesRead);
}
}
}
void byteswrite_fun1(unsigned char *buf,int len)
{
if(serialPort!=-1)write(serialPort, buf, len);
}