单片机串口通讯协议ascii内容摘要:

十六进制: ASCII 码: 第一字节 第二字节 第三字节 第四字节 传输格式如下: 数 符 阶 符 阶 码 数 符 阶 符 阶 码 小 数 部 分 小 数 部 分 小 数 部 分 0 0 7 200 102 102 30 37 43( C )、 38( 8) 36( 6)、 36( 6) 36( 6)、 36( 6) 0 0 7 C8 66 66 小数部分乘以 256 整数部份为第二字节 (200) 第二字节小数部分乘以 256 整数部份为第三字节 (102) 第三字节小数部分乘以 256 整数部份为第四字节 (102) 第 1 字节低 4 位 第 2 字节低 4 位 第 3 字节低 4 位 第 4 字节低 4 位 30 37 43 38 36 36 36 36 第 1 字节高 4 位 第 2 字节高 4 位 第 3 字节高 4 位 第 4 字节高 4 位 注: 仪表内部数据为十六进制表示的十进制数。 如:实时测量值为 500,则用十六进制表示为 1F4H。 仪表通讯传输是将上述十六进制数据转化为标准 ASCII 码(即一字节的16 进制数转化为 2 个 ASCII 码──高 4 位 ASCII 码 +低 4 位 ASCII 码)。 如:上述数据 1F4H( 16 进制 ),传输时,转化为 ASCII 码则为 30H、 31H、 46H、 34H。 6.此浮点数格式的转换: 1) ASCII 码到浮点数: /* in:char* c 要转化的 ASII 码字 符,应为 4 个字符。 Return :转换后的浮点数。 */ float C4toD(char * c) { BYTE Hd[30], Jiema[30]。 float DTc[30]。 float Decimal = 0。 memset(Hd, 0, sizeof(Hd))。 memset(Jiema, 0, sizeof(Jiema))。 memset(DTc, 0, sizeof(DTc))。 float returnflo = 0。 BOOL ShuFU = FALSE, JieFU = FALSE。 if((c[7] 0x40) amp。 amp。 (c[7] 0x47)) Hd[7] = ((c[7] 0x37) amp。 0x0f)。 else if((c[7] 0x60) amp。 amp。 (c[7] 0x67)) Hd[7] = ((c[7] 0x57) amp。 0x0f)。 else Hd[7] = ((c[7] 0x30) amp。 0x0f)。 if((c[6] 0x40) amp。 amp。 (c[6] 0x47)) Hd[6] = ((c[6] 0x37) amp。 0x0f)。 else if((c[6] 0x60) amp。 amp。 (c[6] 0x67)) Hd[6] = ((c[6] 0x57) amp。 0x0f)。 else Hd[6] = ((c[6] 0x30) amp。 0x0f)。 DTc[2] = (float)(((float)(Hd[6] * ) + (float)(Hd[7])) / )。 if((c[5] 0x40) amp。 amp。 (c[5] 0x47)) Hd[5] = ((c[5] 0x37) amp。 0x0f)。 else if((c[5] 0x60) amp。 amp。 (c[5] 0x67)) Hd[5] = ((c[5] 0x57) amp。 0x0f)。 else Hd[5] = ((c[5] 0x30) amp。 0x0f)。 if((c[4] 0x40) amp。 amp。 (c[4] 0x47)) Hd[4] = ((c[4] 0x37) amp。 0x0f)。 else if((c[4] 0x60) amp。 amp。 (c[4] 0x67))。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。