python 串口通信多线程程序

import serial
import threading

class ComClass:
    def __init__(self,port,baud):
        self.port = port
        self.baud = baud
        self.comSerial = None
        self.run = False
        self.open()
        if self.run:
            self.thread1 = threading.Thread(target=self.receiveData)
            self.thread2 = threading.Thread(target=self.sendData)
            self.thread1.start()
            self.thread2.start()
            self.thread1.join()
            self.thread2.join()
            self.close()
        
    def open(self):
        try:
            self.comSerial = serial.Serial(self.port,self.baud)
            self.run = True
            print("打开串口成功")
        except:
            print("打开串口失败")
            self.close()
            
    def close(self):
       self.comSerial.close()
       print("关闭串口")

    def sendData(self):
        print("sendData")
        while self.run:
            send_data = input()
            if send_data:
                self.comSerial.write(send_data.encode('UTF-8'))
                print('发送数据:%s' % send_data)
            if send_data == "break":
                print("发送数据线程结束")
                self.run = False

    def receiveData(self):
        print("receiveData")
        while self.run:
            receive_data = self.comSerial.read(self.comSerial.inWaiting()).decode("gbk")
            if receive_data:
                print('接收数据:%s' % receive_data)

            if receive_data == "break":
                print("接收数据线程结束")
                self.run = False


a = ComClass('COM2',9600)
input("输入任意字符结束程序!")

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python串行通信是指使用Python编程语言进行串口通信的过程。要进行串行通信,需要导入`serial`模块,并使用其中的函数和方法来实现。首先,可以使用`serial.tools.list_ports.comports()`函数获取可用串口列表,该函数会返回一个包含可用串口信息的列表。可以通过遍历这个列表来获取每个串口的信息,例如串口编号等。然后,可以使用`serial.Serial()`函数打开一个特定的串口,指定串口号、波特率等参数。如果成功打开串口,则可以进行数据的收发。最后,使用`serial.Serial`对象的`close()`方法来关闭串口连接。 下面给出一个示例代码,展示了如何使用Python进行串行通信: ```python import serial import serial.tools.list_ports # 获取可用串口列表 port_list = list(serial.tools.list_ports.comports()) if len(port_list) == 0: print('无可用串口') else: for port in port_list: print(port.device) # 打印串口编号 # 打开串口 serial_port = "COM1" # 串口编号 baud_rate = 115200 # 波特率 timeout = 0.01 # 超时时间 ser = serial.Serial(serial_port, baud_rate, timeout=timeout) if ser.is_open: print(serial_port, "打开成功") # 发送数据 data = b"Hello, World!" ser.write(data) # 接收数据 received_data = ser.read(10) print(received_data) # 关闭串口 ser.close() ``` 以上代码中,首先使用`serial.tools.list_ports.comports()`函数获取可用串口列表,并打印出每个串口的编号。然后使用`serial.Serial`函数打开一个串口,并指定串口编号、波特率和超时时间。接下来,使用`write()`方法向串口发送数据,使用`read()`方法从串口接收数据,并打印接收到的数据。最后,使用`close()`方法关闭串口连接。 通过以上代码示例,你可以了解到如何使用Python进行串行通信。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python串口通信方法](https://blog.csdn.net/freiheit_zz/article/details/127088638)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [python--串口通信](https://blog.csdn.net/13011803189/article/details/122506226)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值