注册 登录
编程论坛 VC++/MFC

请教几个编程问题

喜鹊王子 发布于 2013-01-06 20:10, 344 次点击
以下摘自某VC++串口通信的程序:
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048],bt;//设置BYTE数组
CString stremp,data;
float i=0;
variant_inp=m_ctrlComm.GetIput();//读缓冲区
safearray_inp=variant_inp;//VARIANT型变量转换为COleSafeArray型变量
len=safearray_inp.GetOneDimSize();//得到有效数组长度
for(k=0;k<len;k++)
  safearray_inp.GetElement(&k,rxdata+k);//转化为BYTE型数组
  for(k=0;k<len;k++)
     {
         bt=*(char*)(rxdata+k);//字符型
         strtemp.Format("%2X",bt);//将字符送入临时变量strtemp存放
         data+=strtemp;//将字符送入临时变量data存放
         m_dy1=data;
         m_dy=(float)(bt/10.0);
         m_data[num]=m_dy;
         num=num+1;
         ondraw();//在下文,此处略
      }
...
...
以上红色的的部分都不太理解:
1.safearray_inp.GetOneDimSize()   //?????????????
2.safearray_inp.GetElement(&k,rxdata+k) //?????????????
3.bt=*(char*)(rxdata+k)  //?????????????
4.strtemp.Format("%2X",bt)  //?????????????
5.data+=strtemp  //?????????????
6.m_dy=(float)(bt/10.0)  //?????????????
2 回复
#2
yuccn2013-01-07 12:46
你的提问是对红色的部分不理解还是对串口不理解?
红色的部分不是有注释了吗?没有什么好解析的吧
#3
喜鹊王子2013-01-13 15:05
回复 2楼 yuccn
len=safearray_inp.GetOneDimSize();//得到有效数组长度,这个数组里面的元素是 每次采集到的数据 还是单个数据的位?比如我第一次采集到的是2V,第二次是2.3V......,那么这个数组的第一个数据是2、第二个数十2.3吗?要是这样的话,那后面的data+=strtemp该如何理解呢?
1