Python实现串口通信
1. 串口通信
串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。
串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。在python中使用serial进行串口通信。
2. serial库的安装
pip install serial -i https://pypi.tuna.tsinghua.edu.cn/simple
3. 通信
import serial port = "COM3"#端口 baudrate = 9600#波特率,可以设置的范围9600到115200 bytesize = 8#字节大小,为每个字节的比特数 parity = 'E'#校验位选择 stopbits = 1#停止位,用来指示字节完成 timeout = 0.1 ##读出超时设置 ser = serial.Serial(port=port, baudrate=baudrate, bytesize=bytesize, parity=parity, stopbits=stopbits, timeout=timeout)#创建serial对象 data = [0x01, 0x04, 0x00, 0x01, 0x00, 0x08, 0xA0, 0x0C]#我的模块需要发送的十六进制指令 ser.write(data)#给硬件通信模块发送指令,被动模式的通信模块才会返回数据 result = self.ser.read(21) # 读取串口数据,读取21个字节 print(result[0])#打印第一个字节数据
4. 提供几个功能函数
def tenTOtwo8(number):#number为一个字节,此功能为将一个字节转换为二进制的字符串 # 定义栈 s = [] binstring = '' number = int(number) while number > 0: # 余数出栈 rem = number % 2 s.append(rem) number = number // 2 while len(s) > 0: # 元素全部出栈即为所求二进制数 binstring = binstring + str(s.pop()) while len(binstring) < 8: c = 8 - len(binstring) binstring = '0' * c + binstring return binstring # 返回8位的二进制字符串数据 if __name__=="__main__": data=b'9'#b表示字节类型数据 result=tenTOtwo8(data) print(result)#结果是字符串类型的8位00001001
另外:result = int(str_bin, 2) #表示 二进制字符串转10进制
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署