Pyserial 实现串口 base on python3

应用Pyserial 包实现串口通信类:

其主要接口如下:

1. Serial_Create  创建和使能串口

2. Serial_WriteAndReadBin 写读二进制数据流

3. Serial_WriteAndReadString 写读字符串

4. Serial_WriteString 写字符串

5. Serial_WriteBin 写二进制数据

6. Serial_Read 读字符串数据

#coding:utf-8
#!/usr/bin/python3
import serial
import serial.tools.list_ports
import threading
import time

__all__ = ["CSerial"]

class CSerial:
    def __init__(self, Port, Baud, TimeOut):
        self.l_serial = None
        self.alive = False
        self.waitEnd = None
        self.port = Port
        self.baud = Baud
        self.timeOut = TimeOut
        self.readString = ""
        self.readBin = None
        self.receiveReady = False
        self.thread_SerialRead = None

    def Serial_Create(self):
        try:
            self.l_serial = serial.Serial(self.port, self.baud, timeout=self.timeOut)
        except Exception as e:
            print("serial port error:", e)

    def Serial_WriteAndReadBin(self,bin):
        WaitingCnt = 0
        self.alive = True
        self.l_serial.write(bin)
        while self.alive:
            time.sleep(0.1)   #1 second
            if self.l_serial.in_waiting:
                self.readBin = self.l_serial.read(self.l_serial.in_waiting)
                self.alive = False
                return self.readBin
            else:
                 WaitingCnt += 1
                 if WaitingCnt > 3:
                     return None

        return None

    def Serial_WriteAndReadString(self,string):
        WaitingCnt = 0
        self.readString = ""
        self.alive = True
        self.l_serial.write(string.encode("gbk"))
        while self.alive:
            time.sleep(0.1)  #1 second
            if self.l_serial.in_waiting:
                self.readString = self.l_serial.read(self.l_serial.in_waiting).decode("gbk")
                self.alive = False
                return self.readString
            else:
                 WaitingCnt += 1
                 if WaitingCnt > 3:
                     return None

        return None

    def Serial_ReadData(self):
        while self.alive:
            if self.l_serial.in_waiting and self.receiveReady == False:
                self.readData = self.l_serial.read(self.l_serial.in_waiting)
                self.receiveReady = True

    def Serial_WriteString(self,string):
         length = self.l_serial.write(string.encode("gbk"))
         return length

    def Serial_WriteBin(self,bin):
         length = self.l_serial.write(bin)
         return length

    def Serial_Read(self):
        if self.l_serial.in_waiting:
            STRGLO = self.l_serial.read(self.l_serial.in_waiting).decode("gbk")
            print(STRGLO)

    def Serial_Close(self):
        self.alive = False
        if self.l_serial.isOpen():
            self.l_serial.close()

#test example
if __name__ == ‘__main__‘:
    test = CSerial("COM41",9600,100)
    test.Serial_Create()
    print(test.Serial_WriteAndReadString("hello, I am a serial port!\r\n"))

  

原文地址:https://www.cnblogs.com/mftang2018/p/10884543.html

时间: 2024-08-30 08:01:06

Pyserial 实现串口 base on python3的相关文章

Raspberry pi 使用python+pySerial实现串口通信(转)

Raspberry pi 使用python+pySerial实现串口通信 转:http://blog.csdn.net/homeway999/article/details/8642353 目录(?)[+] Raspberry pi 使用pythonpySerial实现串口通信 Raspberry pi端安装pyserial 方法1source安装 方法2pip安装 Raspberry pi端连接串口 Windows端连接串口 Raspberry pi 使用python+pySerial实现串口

Pyserial操作串口

pySerial 介绍 封装了串口通讯模块,支持Linux.Windows.BSD(可能支持所有支持POSIX的操作系统),支持Jython(Java)和IconPython(.NET and Mono). 首页 http://pyserial.sf.net/ 特性所有平台使用同样的类接口端口号默认从0开始,程序中不需要知道端口名称像文件读写一样的API,read.write(readline等也受支持)所有程序全由Python完成,除了标准库外不依赖其他包,除了pywin32(windows)

转:Python通过pyserial控制串口操作

https://blog.csdn.net/lovelyaiq/article/details/48101487 你想通过串行端口读写数据,典型场景就是和一些硬件设备打交道(比如一个机器人或传感器).尽管你可以通过使用Python内置的I/O模块来完成这个任务,但对于串行通信最好的选择是使用 pySerial包 . 这个包的使用非常简单,先安装pySerial,使用类似下面这样的代码就能很容易的打开一个串行端口: 一.用python操作串口,首先需要下载相关模块: pyserial (http:

温度传感器+I2C+串口+PC上位机(pyserial)例子

例子写的有点乱,主要是学习: 温度传感器DS18b20,E2PROM,I2C, 串口读写,PC上位机(pyserial)数据显示 SerialPort.py     PC串口上位机程序,可以设定上限报警温度 需要安装Python3以上,pyserial库,例子在Python3.4下写的. 上位机传给单片机上限报警温度后,单片机存入E2PROM, 单片机断电重启后,从E2PROM读取报警值. i2c.h             I2C总线读写和设定 lcd1602.h         lcd160

Python 串口通讯

摘要: pyserial module: https://github.com/tbusf/pyserial Python使用pyserial进行串口通信:http://blog.csdn.net/log1100/article/details/54380325 串口通讯的python模块--pySerial :http://blog.csdn.net/dainiao01/article/details/5885122 Parameters for the Serial class ser =

Odoo 简介

Odoo 简介 Odoo历史 Odoo8的前身时"Tiny ERP",最初是由比利时的Fabien Pinckaers创建的.到2009年的时候,发布第5版本.公司获得风投,盈利迅速增长,软件更名为OpenERP.OpenERP这个名字最为人们熟知,当时软件已经包含几百个模块了,从财务管理.采购/销售管理.库存管理到人力资源管理.销售点管理.项目管理等等都有.当时可能某些模块的功能已经开始超过传统意义上的ERP(Enterprise Resource Planning,企业资源规划)的

个人Python常用Package及其安装

为了避免每次重装系统时又要东翻西找,现在此记录一下目前常用的Python包安装过程. 1) Python: 2.7.11, 下载地址:www.python.org.由于个人喜欢使用PyQt4(其实是不会PyQt5……),因此选择安装Python2.7. 安装好Python后,记得将D:/Python27和D:/Python/Scripts加入到系统环境变量的Path中. 打开windows的cmd窗口,输入pip install package安装相应的包,如:pip install numpy

大数据环境安装部署步骤

系统环境搭建: 系统环境初始配置: 1.配置IP vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" BOOTPROTO="none" HWADDR="00:0C:29:54:E0:EF" IPV6INIT="yes" NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Ethernet

好久没来了,重出江湖,共享个python34+pyqt+pyserial串口工具源码

真的是好久没来了,写博客对我来说还真是难坚持下来,热度一过就忘了,就算什么时候想起来也懒得去敲一个字,这次真不知道能坚持多久,随心吧,想写写,不想写也不勉强自己. 最近由于工作调试需要自己写了一个带图形界面的串口工具,使用了python34+pyqt4+pyserial+matplot等实现,之前在电子论坛里共享,发现没多人玩不知道在这里玩的人多不多,共享个github的地址,希望有人可以一起玩:https://github.com/wuliaodew/sci_tool 其他说明可以看下我这个帖