用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 错误
既然第一次能正确发送,说明串口设置是正确的,后面为什么又出现错误呢,请高人指点下,谢谢!