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

请教:利用PCOM做串口通讯,但用半天或一天后,通讯就断了,请看下代码,是咋回事

2012-02-09 
请问:利用PCOM做串口通讯,但用半天或一天后,通讯就断了,请看下代码,是怎么回事?//-----------------------

请问:利用PCOM做串口通讯,但用半天或一天后,通讯就断了,请看下代码,是怎么回事?
//---------------------------------------
void __stdcall cntirq(int port)
{  
  Sleep(100) ;  
  int n = sio_iqueue (port);
  char *ibuf = new char[n];
  sio_read (port,ibuf,n);
  int nIndex = 0;
  ReceiveData = "";
  int nX=0;
  for(int x=0;x<n;x++)
  {
  ReceiveData+=IntToHex((unsigned char)ibuf[x],2)+" "; //转成十六进制
  unsigned char c = ibuf[x];
  if(c == 0XFF && x+4 < n)
  {
  nX = x;
  nIndex = 3*x;
  }
  }
  frm_Main->Edit2->Text = "";
  frm_Main->Edit2->Text = ReceiveData;
  frm_Main->Edit1->Text = ReceiveData.SubString(nIndex+13,2)+ReceiveData.SubString (nIndex+10,2)+ReceiveData.SubString(nIndex+7,2);
  frm_Main->Edit3->Text = frm_Main->Edit1->Text;
  delete []ibuf;
}
//---------------------------------------
我一直在接收仪表数据,显示给用户的。请大家帮忙

[解决办法]
int n = sio_iqueue (port); 
char *ibuf = new char[n]; //这个用起来不太好
sio_read (port,ibuf,n); 
你能不能这样测试一下:
 int n = sio_iqueue (port); 
unsigned char ibuf,BUF[1024] ;
int Index
if(n>0)
{ ibuf=sio_getch (port); 
//然后把读出的单个字符放入BUF
if(Index<1023)BUF[INDEX++]=ibuf;
}

热点排行