如何设置死循环处理数据
在用Pcomm控件设计串口通信程序后,需要对接收到的数据进行处理.一旦缓冲区内有数据,sio_read()将其读入ibuf内,但是数据处理机制似乎无法触发.于是,想在载入中断后用个死循环来处理数据,这样如果中断来了就处理中断,中断没来就处理数据,但是这个死循环在哪里设置以及如何设置呢?高手帮帮忙..(好像不少单片机就是这个处理模式)
void __fastcall TForm1::OpenBtnClick(TObject *Sender)
{
int Ret;
Ret=sio_open(portindex); //打开串口
ReceiveMemo->Clear();
sio_ioctl(portindex,B9600,P_NONE|BIT_8|STOP_1); //串口初始化,包括端口号,波特率,以及校验位数据位停止位
sio_SetReadTimeouts(portindex,500,100); //500ms内每隔100ms读一次输入缓冲区,若有数据就跳出循环
void __stdcall cntirq(int); //设置中断函数
sio_cnt_irq(portindex,cntirq,1); // 启动中断处理函数
}
void _stdcall cntirq(int port) //中断处理函数;
{
int iquelen;
int rlen;
char *ibuf=new char[20480];
iquelen=sio_iqueue(portindex); //获取输入缓冲区字符的长度iqueueLength
rlen=sio_read(portindex,ibuf,iquelen); //将输入缓冲区字符内容读到输出缓冲区ibuf 内
for(int i=0;i<iquelen;i++)
{
RxData[i]=ibuf[i];
}
//RxData[i]这是要处理的数据
sio_flush(portindex,1); //清空输出缓冲区内的字符
}
[解决办法]
while(rlen>0){ //your code }
[解决办法]