之前用python处理的都是字符串、列表、字典、元组等数据类型的数据,由于比赛和项目需要,与下位机进行通信,并进行处理。本文以网络通信为例(串口通信同理)。下位机用C语言编写,接收到的是由99个十六进制数组成的数据包。
利用网络串口助手接收到的数据如下图所示:

然而python接收到的数据却是字符串形式:

部分通信协议如以下表格所示(全部协议太多,博主只取其中一部分进行举例):
| 序号 | 字节 | 内容 | 含义 | 备注 |
|---|---|---|---|---|
| 1 | USART_TX_BUFF[0] | 55 | 帧头 | |
| 2 | USART_TX_BUFF[1] | AA | 帧头 | |
| 3 | USART_TX_BUFF[2] | 01 | 计数器 | 发送一次数据+1,累加到255后置零 |
| ··· | ··· | ··· | ··· | ··· |
| 5 | USART_TX_BUFF[4] | 电压高位 | 16进制数据 v=电压/100 | |
| 6 | USART_TX_BUFF[5] | 电压低位 |
本案例中对电压进行处理:
方法一:对字符串处理
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket
import time
tcp_socket = socket.socket
本文介绍如何在Python中处理串口通信中接收到的十六进制数据,特别是高低位字节的处理。通过实例展示了两种方法,包括字符串处理(不推荐,因可能引发异常)和位操作符处理。同时提到了更复杂情况,如高低位位置转换和带符号位转换的处理,并提供了相关链接进一步探讨。
最低0.47元/天 解锁文章
7546

被折叠的 条评论
为什么被折叠?



