用QT在ARM 开发板上进行写串口操作,思路是这样的:当按下串口发送按钮时,对应的slot就执行对串口写的操作,其中slot内是用linux系统的函数直接实现的,简单代码如下:
    bzero( &newtio, sizeof( newtio ) );
    newtio.c_cflag  |=  CLOCAL | CREAD; 
    newtio.c_cflag &= ~CSIZE; 
    newtio.c_cflag |= CS8;
    newtio.c_cflag |= B9600;
    newtio.c_cflag &= ~PARENB;
    newtio.c_cflag &=  ~CSTOPB;
    cfsetispeed(&newtio, B9600);
    cfsetospeed(&newtio, B9600);
     newtio.c_cc[VTIME]  = 0;
    newtio.c_cc[VMIN] = 1;
     tcflush(fd,TCIOFLUSH);       
      if((tcsetattr(fd,TCSANOW,&newtio))!=0)
        {
        perror("com set error");      
         }
//   以上为对串口的设置
 char run[]="\x1b\x40This is a test for printer,I hope this test will be success:) ";
  write(fd,run,(sizeof(run)-1));         //写串口
产生的问题如下:
  第一次按发送按钮时,串口可正常发送数据,但以后再按下时就时不时出现:1 invalid argument   2 inappropriate ioct1 for device  错误
 既然第一次能正确发送,说明串口设置是正确的,后面为什么又出现错误呢,请高人指点下,谢谢!