使用串口工具发送和捕获串口信息
以下为使用串口工具对串口设备进行设备通讯的基本程序
1、使用常见的串口板插入电脑USB后找到USB的端口号
2、修改代码的串口端口号同时修改串口波特率
3、发送数据或者接收数据
# encoding=utf-8
import time
import serial
# 串口打开函数
def open_ser():
port = 'com20' # 串口端口号
baudrate = 460800 # 波特率
try:
global ser # 新建serial对象
ser = serial.Serial(port, baudrate, timeout=2) # 初始化串口
if (ser.isOpen() == True): # 判断是否打开
print("串口打开成功")
except Exception as exc:
print("串口打开异常", exc)
# hex数据发送
def hex_send_msg(hex_data):
try:
print(hex_data, type(hex_data))
ser.write(bytes.fromhex(hex_data))
except Exception as exc:
print("发送异常", exc)
# asc数据发送
def asc_send_msg(asc_data):
try:
send_datas1 = asc_data + '\r\n' # 加换行
ser.write(str(send_datas1).encode("gbk")) # 向串口写数据 gbk编码
print("已发送数据:", send_datas1)
except Exception as exc:
print("发送异常", exc)
def read_msg1():
try:
print("等待接收数据")
while True:
data = ser.readline().hex() # 等待判断是否有数据
if data != '' and data != b'': # 数据不为空
break
print("已接收到数据:", data)
return data # 返回数据
except Exception as exc:
print("读取异常", exc)
# 接收数据
def read_msg2():
try:
print("等待接收数据")
while True:
data = ser.read(ser.in_waiting).decode('gbk') # 等待判断是否有数据
if data != '': # 数据不为空
break
print("已接受到数据:", data)
return data # 返回数据
except Exception as exc:
print("读取异常", exc)
# 关闭串口
def close_ser():
try:
ser.close() # 关闭serial
if ser.isOpen(): # 判断关闭了没有
print("串口未关闭")
else:
print("串口已关闭")
except Exception as exc:
print("串口关闭异常", exc)
"""
if __name__ == '__main__':
open_ser() # 打开串口
# while 1:
# redata = read_msg() # 读数据
# # send_msg(redata) # 写数据
# close_ser() # 关闭串口
# hex_send_msg('EFEFEF080099FF040200010006FEFEFE')
# time.sleep(0.05)
# asc_send_msg('Hello, Serial!')
"""