有网友问我,用通信得到的ASCII码温度数据如下:30H 31H 31H 32H 2E 35H , 怎么也弄不出来在上位机显示112.5度。最多只能显示12.5度,就是说百位丢失了,用FC94以后不知怎么转换,希望老师能给个思路。
下面是我的回答:用FC 94转换的确有问题,可能是因为处理不了小数点。
如果用IEC的FC39转换,它要求ASCII码的格式必须是±v.nnnnnnnE±xx ,±为符号位,v是1位整数,nnnnnnn是7位小数,xx是两位指数。
我想了两个方案:
1.用原始的ASCII码组建满足FC 39的字符串,然后转换。
2.如果ASCII码的小数点位置是固定的,可编一个程序来转换。例如假设温度以0.1度为单位,用字的“与”运算将各位(不包括小数点)ASCII码的低4位数字取出来,乘以该位的权值(如果以0.1度为单位,例如百位为1000)后相加,得到以0.1度为单位的整数值。
各位还有什么更简便的方法吗?