论坛元老
 
- 积分
- 5462
- 金钱
- 5462
- 注册时间
- 2016-3-23
- 在线时间
- 484 小时
|
发表于 2016-8-17 13:21:46
|
显示全部楼层
本帖最后由 skygz 于 2016-8-17 13:35 编辑
不推荐用单片机处理 ASCII数据, 在单片机 等于是 字符串, 你还要转换为数字, 单片机空间小, 处理起来麻烦, ASCII多长的字符, 发到单片机 就占多长的U8数组, 非常不理想,
例如 123.456 当单片机收到就要占用7个字节, 如果 数据都是不定长的,下次可能是 233.1 这时 收到的又是占用5个字节 单片机这数据 不定长度的数据, 要合并起到一个float变量就麻烦了
如果用 十六进制 就不存在这问题了, 浮点数 就只占 4个字节, 不管你是什么样的浮点数都是 4字节, 单片机 只要将收到的4字节 合并到一个float变量即可
ASCII 0------------9 小数点.
十六进制 0x30---------0x39 小数点0x2e
十进制 48--------57 小数点46
单片机里接收到的数据一般是 U8数组, 那么你需要将收到数组 每一个 减去 48值 这时每个U8值就是 对应的数字
那么, 你还要 将数组每个值合并起来到单个 变量里 才能算一个数....... 但是 ASCII字串 不定长度的, 这就不好处理了
|
|