串口读取问题
PowerPC的板子,现成的评估板,内核是MPC8260。板子上没有标准的串口,只有一个2X5(10针)的接口,集成了两个SMC(串行管理控制器),针脚定义跟普通串口差不多,使用时只用一个。硬件就是这样,嵌入式系统是VxWorks。
编了一个读串口的小程序,用Select阻塞在板子的串口处,一旦接收到数据就读取并显示出来,主机这边用串口调试助手向串口发数据。按说点了发送之后数据就到板子的串口了,select函数应该有反应,然后触发读取和显示。但是目前的状况是,发送时必须在数据后附一个回车,否则程序没反应。如果连续发送数据都不带回车,那么直到附带回车后之前发送的数据才会被程序读取和显示。
这是什么情况,怎么感觉跟字符串读取似的呢?
PS:板子上的SMC口在手册里是按Monitor Port定义的,也就是对外显示的通道。我需要它只是一个纯粹的数据传输串口,有这方面的影响么?
读取部分的程序如下:
ioctl(fd,FIOFLUSH,0); FD_ZERO(&saveFds); /* 初始化Set,所以位置零 */ FD_SET(fd,&saveFds); /* 设置fd对应的位 */ while(GoOn) { readFds = saveFds; if ((Fdsnum = select(fd+1,&readFds,NULL,NULL,&tv)) == ERROR) printf("Error in select.\n"); else printf("Number of file descriptors ready for reading = %d\n",Fdsnum); if (FD_ISSET(fd,&readFds)) /* fd读数据就绪 */ { bzero(Rbuff,512); /*ioctl(fd,FIONREAD,(int) &readCnt); /* 判断接收数据缓冲区是否有数据到来 */ if ((readCnt = read(fd,Rbuff,512)) > 0) printf("Read : %s .\n",(char *)Rbuff); if (strcmp(Rbuff,QUIT) == 0) GoOn = FALSE; } }