首页 > 编程 > Python > 正文

python实现串口通信的示例代码

2020-02-15 21:18:18
字体:
来源:转载
供稿:网友

1 硬件设备

TTL串口摄像头(VC0706) USB转TTL烧录器

2 serial安装

第一次安装的是serial的包导包的时候发现下载错了,正确应该是pyserial。安装后直接import就可以了。

3 实现串口通信

3.1 发现端口

Windows下为COM(N, N=1、2...), Ubuntu下为‘/dev/ttyS0'Windows初学者,可以给您一下两种方式确定端口号。

方法一:输入在终端(cmd)中输入

python -m serial.tools.list_ports

输出结果:

COM51 ports found

方法二:搜索电脑上的设备管理器,打开以后然后插入烧录器,自动就会弹出。如果没有弹出就可能是驱动没有安装,安装好以后不好使,重启一下电脑,到了工作的时候大家都知道程序员会跟你说,你重启一下,清一下缓存,这两句话。也有可能是驱动安装的不对。

方法三:直接找一个有端口扫描的上位机,点击扫描就可以了。大部分上位机都是你一插进去就会检测到你的端口。

----->

注意:当串口被占用的时候也有可能导致失败,例如你在编译器有两个进程运行下面的测试代码,第二个进程就会因为端口占用而失效。也有的上位机是因为同时打开了两个上位机的缘故(实验课的时候同学遇到过情况),可以用任务管理器kill掉。

测试:

import serial  #Windowsser = serial.Serial(port='COM5', baudrate=115200, timeout=0.5)print(ser.name)

控制台打印结果: 

COM5Process finished with exit code 0

建立ser对象的代码:

class PicSerial:  __ser = None # ser的单例  __isinit = False   @staticmethod  def get_available_port():    """    检测可以使用的端口号    :return->str: 端口号的名称    """    port = list(list_ports.comports())    if len(port) > 0:      port_name = port[0].device      print(port_name)      return port_name      # logging.info("Available port:", ports)    else:      print("There is no available port.")      # logging.error("There is no available port.")   def __new__(cls, *args, **kwargs):    if PicSerial.__ser is None:      cls.__ser = object.__new__(cls)    return cls.__ser   def __init__(self):    if not PicSerial.__isinit:      self.sername = self.get_available_port()      self.ser = serial.Serial(port=self.sername, baudrate=BAUDRATE)      PicSerial.__isinit = False      print("PicSerial init.")

3.2 发送命令

3.2.1 协议格式

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表