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 协议格式
新闻热点
疑难解答