从单片机传数据给PC机,只有单字节的数据可以收到,双字节的收不到,求解~
PC机程序:
void __fastcall TForm1::Rparm() //查询参数
{//
int i,j,temp;
for(i=0;i<4;i++) //5-8 4 IRequle[4]
{
IRequle[i]=btFrame[i+5];
}
for(i=0;i<3;i++) //9-14 6 IRzero[3]
{
IRzero[i]=btFrame[2*i+9]*256+btFrame[2*i+10];
}
for(j=0;j<2;j++)
{
for(i=0;i<8;i++)//15-46 32 IRvalue[2][8]
{
IRvalue[j][i]=btFrame[16*j+2*i+15]*256+btFrame[16*j+2*i+16];
}
}
for(j=0;j<2;j++)
{
for(i=0;i<8;i++)//47-78 32 IRspan[2][8]
{
IRspan[j][i]=btFrame[16*j+2*i+47]*256+btFrame[16*j+2*i+48];
}
}
for(j=0;j<2;j++)
{
for(i=0;i<8;i++)//79-110 32 IRvalueC[2][8]
{
IRvalueC[j][i]=btFrame[16*j+2*i+79]*256+btFrame[16*j+2*i+80];
}
}
for(i=0;i<8;i++)//149-164 16 Zerovalue0[8]
{
Zerovalue[i]=btFrame[2*i+149]*256+btFrame[2*i+150];
}
for(i=0;i<5;i++)//165-169 5 Datspan0[5]
{
Datspan[i]=btFrame[i+165];
}
for(i=0;i<6;i++)//179-184 6 ECequle[6]
{
ECequle[i]=btFrame[2*i+179];
}
}
单片机程序:
Mod_32(unsigned char a,unsigned int dTemp)
{
ComSendBuf1[a]=dTemp/256;
ComSendBuf1[a+1]=dTemp%256;
}
void Rparm()//查询参数
{
unsigned char i,j;
for(i=0;i<4;i++) //5-8 4 IRequle[4]
{
ComSendBuf1[i+5]=IRequle[i];
}
for(i=0;i<3;i++) //9-14 6 IRzero[3]
{
Mod_32(2*i+9,IRzero[i]);
}
for(j=0;j<2;j++)
{
for(i=0;i<8;i++)//15-46 32 IRvalue[2][8]
{
Mod_32(16*j+2*i+15,IRvalue[j][i]);
}
}
for(j=0;j<2;j++)
{
for(i=0;i<8;i++)//47-78 32 IRspan[2][8]
{
Mod_32(16*j+2*i+47,IRspan[j][i]);
}
}
for(j=0;j<2;j++)
{
for(i=0;i<8;i++)//79-110 32 IRvalueC[2][8]
{
Mod_32(16*j+2*i+79,IRvalueC[j][i]);
}
}
for(i=0;i<8;i++)//149-164 16 Zerovalue0[8]
{
Mod_32(2*i+149,Zerovalue[i]);
}
for(i=0;i<5;i++)//165-169 5 Datspan0[5]
{
ComSendBuf1[i+165]=Datspan[i];
}
for(i=0;i<6;i++)//179-184 6 ECequle[6]
{
ComSendBuf1[2*i+179]=ECequle[i];
}
}
其中Datspan[5]、ECequle[6]、IRequle[4]三个数组可以正常读出来,而其他的数却读不出来,为什么?
可能是Mod_32(unsigned char a,unsigned int dTemp)函数出的错,但我在PC机上用这个程序模拟了一遍,却一点问题也没有,请高手指教,谢谢~