用代码生成一个Linux系统下的串口调试助手,可实现16进制字符文件收发
时间: 2024-05-07 14:21:48 浏览: 99
以下是一个简单的串口调试助手的 Python 代码,可以在 Linux 系统下使用。该程序可以实现 16 进制字符文件的收发功能。
```python
import serial
import time
# 打开串口
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=0.5)
def send_hex_file(file_path):
with open(file_path, 'rb') as f:
hex_str = f.read().hex()
ser.write(bytes.fromhex(hex_str))
def receive_hex_file(file_path):
hex_str = ''
while True:
if ser.in_waiting > 0:
data = ser.read(ser.in_waiting).hex()
hex_str += data
if hex_str.endswith('1a'): # 接收到文件结束符
break
with open(file_path, 'wb') as f:
f.write(bytes.fromhex(hex_str))
# 发送文件
send_hex_file('test.hex')
time.sleep(1)
# 接收文件
receive_hex_file('received.hex')
# 关闭串口
ser.close()
```
需要注意的是,在发送文件时,我们首先打开文件,读取其中的内容,并将其转换为 16 进制字符串。然后,使用 `bytes.fromhex()` 将该字符串转换为字节流,并通过串口发送出去。
在接收文件时,我们不断读取串口中的数据,将其拼接成一个完整的 16 进制字符串。当该字符串以 `1a` 结尾时,表示文件传输结束,此时我们将该字符串转换为字节流,写入文件中。
阅读全文