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);

}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐