这是一段接收数据的程序,接受3个通道数据,每个数据共4Byte,第一Byte为通道号,后三个字节代表一个数。我一次性发36个字节即每通道3个数据,但算出来的数data1[3]很大,显示及存储后都被截断,不知该如何处理?
unsigned char Buffer[100]; //接收缓存
unsigned char Buf1[24],Buf2[24],Buf3[24];
int mBuf1=0,mBuf2=0,mBuf3=0;
unsigned long int data1[3],data2[3],data3[3];
int nCount=YbCommDevice1->InQueue->Count;
Memo2->Lines->Add(IntToStr(nCount));
int n = YbCommDevice1->Read(Buffer,48); //收到数据的字节数
if(n>0)
{
for(int i=0; i {
if(i%4==0)
switch(Buffer[i])
{
case 1: Buf1[mBuf1*4+0]=Buffer[i];
Buf1[mBuf1*4+1]=Buffer[i+1];
Buf1[mBuf1*4+2]=Buffer[i+2];
Buf1[mBuf1*4+3]=Buffer[i+3];
mBuf1=mBuf1+1;
break;
case 2: Buf2[mBuf2*4+0]=Buffer[i];
Buf2[mBuf2*4+1]=Buffer[i+1];
Buf2[mBuf2*4+2]=Buffer[i+2];
Buf2[mBuf2*4+3]=Buffer[i+3];
mBuf2=mBuf2+1;
break;
case 3: Buf3[mBuf3*4+0]=Buffer[i];
Buf3[mBuf3*4+1]=Buffer[i+1];
Buf3[mBuf3*4+2]=Buffer[i+2];
Buf3[mBuf3*4+3]=Buffer[i+3];
mBuf3=mBuf3+1;
break;
}
data1[0]=Buf1[1]*256^2+Buf1[2]*256+Buf1[3];//
data1[1]=Buf1[5]*256^2+Buf1[6]*256+Buf1[7];
data1[2]=Buf1[9]*256^2+Buf1[10]*256+Buf1[11];
}
}
现实的数据:14086 26386 32007 4648 30488 20771 19782 14105 33354
发射的数据:(16进制) 01 12 25 04 02 33 21 26 03 58 15 44 01 42 25 10 02 41 36 16 03 72 45 17 01 58 25 05 02 65 34 21 03 92 10 48
你帮看看是哪里出了问题?
--------------------next---------------------
阅读(1168) | 评论(0) | 转发(0) |