VC通过串口接收数据然后在多个编辑框中显示的问题 30

串口接收共60个数据,共有30个编辑框,编辑框1-30分别对应接收数据的1-30个数据.我转换成16进制数据在一个编辑框中显示的结果和在30个编辑框中的结果不一样。在一个... 串口接收共60个数据,共有30个编辑框,编辑框1-30分别对应接收数据的1-30个数据.我转换成16进制数据在一个编辑框中显示的结果和在30个编辑框中的结果不一样。在一个编辑框中显示的数据是对的,在那30个编辑框中分别显示的时候就出错了(本来应该显示的是0-30)。

我如果用串口接收30个数据的话,结果又是对的,请各位大侠帮帮忙!
下面是串口接收事件的程序:
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[128],bt[30]; //设置BYTE数组 An 8-bit integer that is not signed.
CString str[30];
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{ ////////以下你可以根据自己的通信协议加入处理代码
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组

UpdateData(TRUE);
for(k=0;k<len/2;k++) //将数组转换为Cstring型变量
{
bt[k]=*(char*)(rxdata+k); //字符型
str[k].Format("%2X",bt[k]); //将字符送入临时变量strtemp存放
m_recv1+=str[k];
m_TempData[k].SetWindowText(str[k]);
}
UpdateData(FALSE);
自己已经解决
RThreshold设置为60即可
展开
 我来答
匿名用户
2013-08-31
展开全部
通信协议是关键吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式