pyserial是python提供用于进行串口通信的库源文档:https://pythonhosted.org/pyserial/1、安装pyserial

pip install pyserial2、查看电脑现连串口设备

import serial.tools.list_ports#检测设备的端口数# plist = list(serial.tools.list_ports.comports())# if len(plist) <= 0:# print("没有发现端口!")# else:# #端口数# print len(plist)# plist_0 = list(plist[1])# serialName = plist_0[0]# print serialName# serialFd = serial.Serial(serialName, 9600, timeout=60)# print(serialFd.name)3、将要发送的数据进行转换

所发十六进制需转换为以下格式# 所发十六进制字符串010591F50000F104cmd = [0x01, 0x05, 0x91, 0xF5, 0x00, 0x00, 0xF1, 0x04]

# 转成16进制的函数 def convert_hex(string, strip_index_end=18): result = [] for i in range(0, strip_index_end, 2): hex_num = '0x' + string[i] + string[i+1] result.append(eval(hex_num)) return result4、进行串口通信

串口通信 Windows下端口为COM*, Ubuntu下为/dev/ttyS*class Ser(object): def __init__(self): # 打开端口 self.port = serial.Serial(port=serialconf.SERIAL_NAME, baudrate=serialconf.SERIAL_PORT, timeout=serialconf.SERIAL_TIMEOUT) # 发送指令的完整流程 def send_cmd(self, send_cmd): send_cmd = self.convert_hex(send_cmd) _LOG.debug("serial port send_command:[%s]" % repr(send_cmd)) self.port.write(send_cmd) def recv_data(self, len=4): response = self.port.read(6) response = response.encode('hex') return response # 转成16进制的函数 def convert_hex(self, string, strip_index_end=18): result = [] for i in range(0, strip_index_end, 2): hex_num = '0x' + string[i] + string[i+1] result.append(eval(hex_num)) return result5、测试用例

my_ser = Ser()print "send blink command"my_ser.send_cmd(serialconf.BLINK_CMD)ret = my_ser.recv_data()print "send blink ret:%s %d" % (ret, ret.lower() == serialconf.BLINK_RET.lower())6、接口、参数详细介绍

优秀博客:https://blog.csdn.net/u012611644/article/details/79125234