是这样的,我的毕设是用CAN总线知识做的,上位机软件是MFC写的,下位机返回数据帧后,我需要对特定的帧ID的数据帧中前两字节的数据(16进制表示,比如 20 ff)先转换成十进制,然后计算得到一个电压值,放进编辑框中,实时显示,根据传回来数据帧前两字节的变化不断变化,这要如何实现?另外我给编辑框关联变量时,变量类型该选什么,CString还是浮点型?(电压值会出现小数),求大佬详细解答。。我对MFC没啥了解,C也忘记很多了,希望能对上述问题详细点的解答,谢谢
最简单当然是绑定为float类型了。
不过要比较灵活一些,可以帮定为CEdit控件类型
用 m_edit1.SetDlgItemText(你需要设置的任何文本)
比如
float f = 1.234; //假设从你设备读取的
CString str;
str.Format(_T("%f"), f);
m_edit1.SetDlgItemText(str);
不好意思,才看到你的消息,回复晚了。
float f = 1.234; //假设从你设备读取的
CString str;
str.Format(_T("%f"), f);
m_edit1.SetDlgItemText(str);
编辑框关联变量可以选控制型或者值类型都可以,你不熟悉的话就选值类型(和你需要数据类型一致就行).
CString与int , float相互转换.
int i = 15;
float f = 1.1;
CString stri="99",strf="77";
stri.Format("%d",i); <=> i = atoi(str);
strf.Format("%.2f",f); <=> f = atof(str);
记住,数据更新或者编辑框更新后需要UpdateData(true/false),里面的true/false不要弄错了.
if (frameinfo[i].ID == 0x0282)
{
tmpstr.Format("%02x",frameinfo[i].Data[2]);
str.Format("%d", tmpstr);
n = atoi((CT2A)str);;
float m = n * 5 / 4095;
m_Edit_nongdu.SetDlgItemText(m);
}