可以帮我看下这个程序不,这是个获取串口接收数据的程序,我有点不明白之间的数据是如何转换的,我用另一个程序试了下,我在上位机上输入0xff,下位机收到的是00 e9 02 b3 00 ea 02 b3 02 2f 03 ff ,就是说,下位机给我发送
00 e9 02 b3 00 ea 02 b3 02 2f 03 ff ,我在上位机上用数组保存的是00 e9 02 b3 00 ea 02 b3 02 2f 03 ff ,然后AD转换出来,看看下面的程序
        LONG len,k;
BYTE rxdata[2048];
     COleSafeArray safearray;
    CString stremp1,stremp2;
        if(m_comm1.GetCommEvent()==2)
           {
variant1 = m_comm1.GetInput();
safearray = variant1;
len = safearray.GetOneDimSize();
for(k=0;k<len;k++)
{
safearray.GetElement(&k,rxdata+k);
}
for(k=0;k<len;k++)  
{
    int bt = (*(unsigned char*)(rxdata+k));
if((k%2)==0)
if((k+1)<len)
{
gllen++;
stremp2.Format("ADC%d转换结果:",gllen);
int temp = bt*256+(*(unsigned char *)(rxdata+k+1));
stremp1.Format("%d",(3300*temp/1024));
strRXDdata += stremp2;
strRXDdata += stremp1;
strRXDdata += "mV\r\n";
}
} }
SetDlgItemText(IDC_EDIT1,strRXDdata);
gllen = 0;
strRXDdata="";
这个程序中,rxdata是怎么存放数据的,假如我接收的数据是00 e9 02 b3 00 ea 02 b3 02 2f 03 ff,数组的每一位怎么存,还有,int bt = (*(unsigned char*)(rxdata+k));中的rxdata+k是什么意思,串口传递数据是一个字节一个字节的传么,那0xff为什么是3个字节,数组rxdata中每一位存的是一个字节还是所有数据,也就是说3个字节??麻烦各位了。跟底层交互这块不是很通

解决方案 »

  1.   

     gllen是上面定义的一个全局变量,是对接收到的转换结果的个数进行计算
      

  2.   

    variant1 = m_comm1.GetInput(); //接收数据       
            safearray = variant1;                
            len = safearray.GetOneDimSize(); //获取接收数据的长度   
            for(k=0;k<len;k++)
            {
                safearray.GetElement(&k,rxdata+k);//将接收的数据按顺序取出放入rxdata数组           }int bt = (*(unsigned char*)(rxdata+k));
    等价于
    int bt = rxdata[k];rxdata每一位存一个字节00 e9 02 b3 00 ea 02 b3 02 2f 03 ff对应
    rxdata[0]————rxdata[11]