用百度的comate生成,串口收一段特定16进制串,回复一另外一段特定的16进制串。玩玩

import serial
import time

# 串口配置
SERIAL_PORT = 'COM143'  # 替换为你的串口名
BAUD_RATE = 9600  # 替换为你的波特率
TIMEOUT = 0.01  # 超时时间(秒)

# 匹配的16进制字符串
MATCHING_DATA = '01 E0 01 01 C0 7E'


# 要发送的响应数据
RESPONSE_DATA = '01 E4 04 4B 19 9D 65 83 7C'

# 将16进制字符串转换为字节串
# 首先,将字符串分割成单独的16进制数,然后将其转换为整数,最后转换回字节
response_bytes = bytearray.fromhex(' '.join(RESPONSE_DATA.split()))


# 打开串口
ser = serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=TIMEOUT)

print(f"Listening on {SERIAL_PORT} at {BAUD_RATE} baud...")

try:
    while True:
        # 读取串口数据
        if ser.in_waiting:
            # data = ser.readline().decode('utf-8').strip()
            data = ser.readline().strip()
            # hex_data = ' '.join([f'{b:02X}' for b in data.encode('utf-8')])
            hex_data = ' '.join([f'{b:02X}' for b in data])
            
            # 检查是否匹配
            if hex_data.upper() == MATCHING_DATA:
                print(f"Matching data received: {hex_data}")
                # 发送响应数据
                # ser.write(RESPONSE_DATA.encode('utf-8'))
                ser.write(response_bytes)
                print(f"Sent response: {RESPONSE_DATA}")
            else:
                print(f"Not Mathing,Received data: {hex_data}")
        
        # 休眠以减少CPU使用率
        time.sleep(0.01)

except KeyboardInterrupt:
    print("Program interrupted.")
finally:
    # 关闭串口
    ser.close()

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值