欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Sunrise x3 Pie 和 STM32 串行通信代码

最编程 2024-03-07 17:19:10
...

x3派:
①接收

#!/usr/bin/env python3

import sys
import signal
import os
import time

# 瀵煎叆python涓插彛搴?
import serial
import serial.tools.list_ports

def serialTest():
    print("List of enabled UART:")
    os.system('ls /dev/tty[a-zA-Z]*')
    try:
        ser = serial.Serial("/dev/ttyS3", int(9600), timeout=1) # 1s timeout
    except Exception as e:
        print("!\n")
        return 1

    print(ser)

    try:
        while True:
            # Read data from STM32
            received_data = ser.readline().decode('ascii').strip()
            if received_data:
                print("接收到的数据 ",received_data )

            time.sleep(1)

    except KeyboardInterrupt:
        pass
    finally:
        ser.close()

    return 0

if __name__ == '__main__':
    if serialTest() != 0:
        print("!")
    else:
        print("!")

②发送

#!/usr/bin/env python3

import sys
import os
import time

import serial
import serial.tools.list_ports

class SerialSender:
    def __init__(self, port, baudrate=9600):
        self.ser = serial.Serial(port, baudrate)

    def send_data(self, data):
        try:
            # 将数据转换为十六进制字符串并发送
            hex_data = ' '.join(format(val, '02X') for val in data)
            self.ser.write(bytes.fromhex(hex_data))
            print(f"Sent data in hex: {hex_data}")
        except Exception as e:
            print(f"Error during sending data: {e}")

    def close_serial(self):
        self.ser.close()


if __name__ == '__main__':
    # 请根据实际情况修改串口号
    sender = SerialSender("/dev/ttyS3", 9600)

    try:
        # 示例数据,根据实际需求修改
        data_to_send = [0x02]
        sender.send_data(data_to_send)

    except KeyboardInterrupt:
        pass
    finally:
        sender.close_serial()





STM32:
接收和发送的代码直接使用江协科技的例程:
在这里插入图片描述
①发送:
在这里插入图片描述
②接收:
在这里插入图片描述