VC++串口接收到的数据进行计算
visualc++6.0将接收到的数据进行处理下,因为接收到的是cstring型,进行计算的话要先转换为整型。然后再把处理后的数据显示在编辑框里,这个过程是怎样的呢?谢谢...
visual c++6.0 将接收到的数据进行处理下,因为接收到的是cstring型,进行计算的话要先转换为整型。然后再把处理后的数据显示在编辑框里,这个过程是怎样的呢?谢谢各位了!
/***我是要提取串口接收的数据进行一个处理后发到另外一个编辑框中,串口发来的是“\n数据\n”
variant_inp.Attach(m_ctrlComm.GetInput());
variantSafe_inp = variant_inp;
len = variantSafe_inp.GetOneDimSize(); //获取一维数组的大小,验证得到的有效数据长度
for (k=0;k<len;k++)
variantSafe_inp.GetElement(&k,rxdata+k); //转换为BYTE型数组
BYTE *pB = new BYTE[k];
memcpy(pB,rxdata,k);
for(k=0;k<len;k++) //将数组转换为Cstring 型变量
{ BYTE bt=*(char*)(rxdata+k); //字符型
strTemp1.Format("%c",bt); //将字符送入临时变量strtemp 存放
}
m_strRXData+=strTemp1; //加入接收编辑框对应字符串
UpdateData(FALSE); //更新编辑框内容 展开
/***我是要提取串口接收的数据进行一个处理后发到另外一个编辑框中,串口发来的是“\n数据\n”
variant_inp.Attach(m_ctrlComm.GetInput());
variantSafe_inp = variant_inp;
len = variantSafe_inp.GetOneDimSize(); //获取一维数组的大小,验证得到的有效数据长度
for (k=0;k<len;k++)
variantSafe_inp.GetElement(&k,rxdata+k); //转换为BYTE型数组
BYTE *pB = new BYTE[k];
memcpy(pB,rxdata,k);
for(k=0;k<len;k++) //将数组转换为Cstring 型变量
{ BYTE bt=*(char*)(rxdata+k); //字符型
strTemp1.Format("%c",bt); //将字符送入临时变量strtemp 存放
}
m_strRXData+=strTemp1; //加入接收编辑框对应字符串
UpdateData(FALSE); //更新编辑框内容 展开
展开全部
在你的程序里,在memcpy(pB,rxdata,k);代码的后面,把pB中存储的字符串数据转为实际的数据,你的这个字符串数据应该是ASSIC码,你按照字节把ASSIC码转为16进制数字,然后把k-2个16进制数拼成一个完整的数进行数据处理,处理出来的数在转为ASSIC码,存回pB数组中,再将pB字符串转为m_strRXData,进行更新显示。
你的m_strRXData+=strTemp1;应该放在for循环里。
你的m_strRXData+=strTemp1;应该放在for循环里。
追问
嗯,就是这个拼的过程是咋样的呢?老是拼不对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-12-16
展开全部
推荐看书
Visual C++_Turbo C串口通信编程实践
Visual C++_Turbo C串口通信编程实践
追问
主要是程序实现!
追答
恩,这本 书很好的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
接收到的都是char,
CString str;
for(int i=;i<count;i++){
str.Format("%2X ".buffer[i]);
m_edit_str+=str;
}
UpdateData(false);
CString str;
for(int i=;i<count;i++){
str.Format("%2X ".buffer[i]);
m_edit_str+=str;
}
UpdateData(false);
更多追问追答
追问
那我要进行四则运算的话还是要转为整型才行的吧?
追答
int i = atoi("123");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询