读书人

请教:利用PCOM做串口通讯但用半天或

发布时间: 2012-02-09 18:22:27 作者: rapoo

请问:利用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;
}

读书人网 >C++ Builder

热点推荐