首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么设置死循环处理数据

2012-03-31 
如何设置死循环处理数据在用Pcomm控件设计串口通信程序后,需要对接收到的数据进行处理.一旦缓冲区内有数据

如何设置死循环处理数据
在用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); //清空输出缓冲区内的字符
 }



[解决办法]

C/C++ code
while(rlen>0){  //your code }
[解决办法]
探讨
死循环能在中断函数外,在void __fastcall TForm1::OpenBtnClick(TObject *Sender)内吗?

引用:
C/C++ code

while(rlen>0)
{
//your code
}

热点排行