首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何避免在使用pySerial重新连接到Python下的USB端口时在ttyUSB0和ttyUSB1之间翻转?

在使用pySerial重新连接到Python下的USB端口时,遇到ttyUSB0和ttyUSB1之间翻转的问题,通常是由于操作系统动态分配USB设备名称导致的。以下是解决这个问题的基础概念、优势、类型、应用场景以及解决方案:

基础概念

  • USB设备命名:Linux系统中,USB串口设备通常被命名为ttyUSB0, ttyUSB1等。这些名称在设备插入和拔出时会发生变化。
  • 设备文件:在Linux系统中,设备通过设备文件表示,如/dev/ttyUSB0。

优势

  • 动态分配:操作系统自动分配设备名称,方便管理多个USB设备。
  • 灵活性:设备名称的变化不会影响设备的实际功能。

类型

  • 静态命名:通过配置文件或脚本固定设备名称。
  • 动态检测:编写脚本实时检测设备连接状态并获取正确的设备名称。

应用场景

  • 自动化测试:在自动化测试中需要稳定地连接到特定的USB设备。
  • 嵌入式系统:在嵌入式系统中,设备名称的稳定性对于系统的可靠性至关重要。

解决方案

为了避免在ttyUSB0和ttyUSB1之间翻转,可以采用以下几种方法:

方法一:使用udev规则固定设备名称

通过创建udev规则,可以固定USB设备的名称。以下是一个示例:

  1. 创建一个新的udev规则文件:
  2. 创建一个新的udev规则文件:
  3. 添加以下内容,将ttyUSB设备固定为/dev/ttyUSB_serial:
  4. 添加以下内容,将ttyUSB设备固定为/dev/ttyUSB_serial:
  5. 这里的idVendoridProduct需要替换为你的USB设备的实际值。
  6. 重新加载udev规则:
  7. 重新加载udev规则:

方法二:使用pySerial动态检测设备

编写一个脚本来动态检测并连接到正确的USB设备:

代码语言:txt
复制
import serial.tools.list_ports

def find_usb_serial_port():
    for port in serial.tools.list_ports.comports():
        if 'USB' in port.description:
            return port.device
    return None

if __name__ == "__main__":
    port = find_usb_serial_port()
    if port:
        ser = serial.Serial(port, 9600)
        print(f"Connected to {port}")
    else:
        print("No USB serial device found")

参考链接

通过以上方法,可以有效避免在使用pySerial重新连接到Python下的USB端口时在ttyUSB0和ttyUSB1之间翻转的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

当DevOps撞上物联网

小编说:DevOps 领域在近年来变得流行而普遍。它强调不同的角色之间共同协作,以及如何工作得更加紧密,就像这个词语的词根暗示的那样——开发和运维。但是DevOps和物联网有什么关系?...ESP8266芯片需要一个USB到串口的适配器去连接USB接口,它由NodeMCU板提供。 ···板子有几个输入/输出的端口,可以连接到某些硬件上来可视化构建的状态。...这样的软件有很多,比如在Linux下的Minicom和Windows下的Putty。 ···使用串口设置9600波特率、八位、无奇偶校验和一个停止位。这个设置通常缩写为9600 8N1。...···既然我们已经有了串行终端连接,将NodeMCU连到USB端口,切换到终端,验证你在终端的窗口看到了提示符。 如果你使用的是Minicom,提示的窗口如下: ?...下面的例子是在本书撰写时,在命令行中上传0.9.6固件的命令: sudo python .

77330

如何优雅地使用minicom

修改好之后,回车退到上一个界面,此时记得往下,选择 Save setup as dfl 将刚刚的修改保存为默认配置,避免下次使用还需要再次配置。...但当你可能需要使用多个串口时,问题就来了,每次需要先查看下设备名 ls /dev/ttyUSB* 再配置下minicom,手工改成这个设备,才能使用。一点都不方便。...方式二:使用参数指定设备(推荐) 研究下mincom的参数后,发现有更简单的实现方式,使用minicom的-D参数。...使用效果 zhuangqiubin@zhuangqiubin-PC:~$ com 1) /dev/ttyUSB0 2) /dev/ttyUSB1 #?...打开minicom时间戳 在minicom中,按下 Ctrl+A,再按 N,即可激活时间戳,在每行log前添加当前系统的时间戳。 用于观察启动时间之类的,还是比较方便。

4.3K10
  • minicom指令_如何优雅地使用minicom

    修改好之后,回车退到上一个界面,此时记得往下,选择 Save setup as dfl 将刚刚的修改保存为默认配置,避免下次使用还需要再次配置。...但当你可能需要使用多个串口时,问题就来了,每次需要先查看下设备名 ls /dev/ttyUSB* 再配置下minicom,手工改成这个设备,才能使用。一点都不方便。...方式二:使用参数指定设备(推荐) 研究下mincom的参数后,发现有更简单的实现方式,使用minicom的-D参数。...使用效果 zhuangqiubin@zhuangqiubin-PC:~$ com 1) /dev/ttyUSB0 2) /dev/ttyUSB1 #?...打开minicom时间戳 在minicom中,按下 Ctrl+A,再按 N,即可激活时间戳,在每行log前添加当前系统的时间戳。 用于观察启动时间之类的,还是比较方便。

    2.5K30

    树莓派基础实验37:pyserial模块通信实验

    串口是计算机上一种非常通用的设备通信协议,pyserial模块封装了python对串口的访问,为多平台的使用提供了统一的接口。   ...本实验中学习树莓派中使用Python的pyserial模块,通过串口与PC电脑的串口调试工具进行通信。...功能: 在所有支持的平台上基于相同类的接口。 通过Python属性访问端口设置。 通过RTS / CTS和/或Xon / Xoff支持不同的字节大小,停止位,奇偶校验和流控制。 有无超时都可以使用。...带有“读”和“写”的API之类的文件(也支持“ readline”等)。 该软件包中的文件是100%纯Python。 该端口已设置为二进制传输。...2.打开串口 在给出端口时,在创建对象时立即打开端口。当端口是None并且需要连续调用时它不会打开open()。 port是设备名称:取决于操作系统。

    2.9K30

    利用python发出rs232信号

    ald下载python2.7;下载pyserial-2.6(忘记从 哪里下载pyserial了,可以在我的上传资源里找) 步骤: 1)从http://rj.baidu.com/soft/detail/25282...5)将USB线的usb端插入PC 6)假如是第一次使用usb线,PC机会自动安装它的驱动。这个过程可能比较长,达到十几分钟 7)安装完成后,PC的设备管理器会显示出usb线对应的端口号。...在我的计算机上是COM15 ? 8)回到python IDLE,载入pyserial >>import serial 9)此时可以将rs232这端的信号引出来。我的线缆的232端是母口 ?...(s) 12)用万用表测量2口和5口之间电压,显示电压约为-8伏,说明python可以控制usb口的发射。...然后在IDLE输入 >>ser.close() 14)再次测量2-5之间电压,此时电压为零。

    2.4K10

    QCSuper:在高通手机猫上捕获无线2G3G4G数据包

    安装 QCSuper已在Ubuntu 16.04,18.04和Windows 7上进行了测试开发。它依赖于一些Python模块。 想要使用它,你的手机必须root或通过USB暴露diag服务端口。...你可以在此处找到有关如何下载和设置adb的教程。adb shell命令必须正常工作才能继续。...使用(USB猫) 你可以将QCSuper与USB猫一起使用--usb-modem 选项暴露Diag端口,其中是Linux上伪串行设备(如/dev/ttyUSB0,/dev/ttyHS2和其他可能的设备)...注意,在大多数设置中,你需要以root用户身份运行QCSuper才能使用此模式,尤其是处理串口干扰问题。 如果你不清楚/dev下哪些设备暴露了Diag端口,你可能需要对其中的设备进行逐一的尝试。...你可能必须使用前一个运营商的解锁代码并将其提交给设备:sudo mmcli -i 0 --pin= 如果默认情况下,基于高通的USB设备未暴露Diag端口,则可能需要通过AT端口键入以下命令来启用Diag

    2.3K40

    python pyserial 串行端口编程

    一、概述 pyserial模块封装了对串口的访问。 二、特性 在支持的平台上有统一的接口。 通过python属性访问串口设置。 支持不同的字节大小、停止位、校验位和流控设置。...类似文件的API,例如read和write,也支持readline等。 支持二进制传输,没有null消除,没有cr-lf转换。 三、系统要求 python 2.3及以上版本,包括py3k。...四、使用方法和实例 1、导入pyserial模块 import serial 2、打开串行口 // 打开串口0, 9600,8N1,连接超时0.5秒 import serial ser=serial.Serial...("/dev/ttyUSB0",9600,timeout=0.5) #使用USB连接串行口 ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5) #使用树莓派的...使用readline()时应该注意:打开串口时应该指定超时,否则如果串口没有收到新行,则会一直等待。如果没有超时,readline会报异常。

    98420

    ubuntu嵌入式工具kermit以及oflash使用

    近期重新开始学习嵌入式,在 ubuntu 下完成对 JZ2440 开发板的配置和开发,kermit 和 oflash 已经有很久没有用了,所以记录一下用法,免得日后又忘了。...,可能是 /dev/ttyS0, 并且 serialport 和 openJTAG 一起插的时候会有 /dev/ttyUSB0 和 /dev/ttyUSB1 同时存在,可能会搞错顺序,所以老师叫我们不要同时插入这两个...连接串口 插入串口的情况下,在终端输入以下命令就可以进入软件界面 $ sudo kermit 此时,输入 connect 便可以进入命令界面与本机的串口进行通信,前提是有串口,以下是我在 Nor flash...下用 uboot 输出的信息,说明已经成功连接到了开发板 也可以用以下命令直接进入命令模式 $ sudo kermit -c 断开串口 断开和串口的连接进入 ubuntu 环境时可以用 Ctrl +...\ 再加 C,这个在工具中也有说到,想要再次连接时直接输入 connect 即可 ---- oflash 使用 这是将二进制文件烧写到 JZ2440 要用到的工具,使用方法也很简单,大致是 $ sudo

    56830

    STM32和树莓派串口透传

    目录 树莓派环境串口透传 STM32环境串口透传 ---- 最近做一个项目需要STM32和树莓派进行串口通信,实现原理如下: 第一步:使用USB转TTL分别调试STM32和树莓派的串口透传,确保可以通信...; 第二步:确保第一步成功后,将树莓派和STM32连接,进行串口透传。...下面进行具体实验吧~ 树莓派环境串口透传 在开始前说明以下几点: 1、树莓派UART端口的位置:TXD位于HEAD-8;RXD位于HEAD-10;GND位于HEAD-6(可选其他GND)。...2、树莓派的TXD应接USB转串口设备的RXD,当然如果测试失败请交换RXD和TXD的顺序。 ?...minicom仅满足调试用途,如果需要编程解决问题那么python的serial扩展库——pyserial则是一个不错的选择。

    2K20

    Ubuntu 14.04下超级终端Minicom连接ARM

    /xiaobin_hlj80/article/details/47192201 笔者的毕业设计涉及在ARM板中运行OpenCV进行识别的部分,所以最近一直在学习嵌入式和交叉编译的内容。...Windows 7系统下运行虚拟机实现的,而笔者比较习惯于使用Ubuntu,且不喜欢工作时在Windows系统与Ubuntu之间相互切换,所以索性就尝试直接在Ubuntu下使用超级终端实现与ARM板之间的通讯了...在Windows 7系统下,我用的是Hyper Terminal软件实现超级终端功能。在Linux下,可以使用Minicom软件实现相同的功能。...直到最后一步对超级终端进行测试时才上电。 一、查找串口设备 笔者使用USB转RS232连接线,将PC端与ARM板连接在一起。首先笔者需要找到串口设备的地址,才能对其进行配置。...] usb 3-4: FTDI USB Serial Device converter now attached to ttyUSB0 其中,ttyUSB0即为我们新插入的USB端口。

    1.8K60

    欧盟将统一使用的USB Type-C接口,引脚信号及PCB布线是什么样的?

    由于连接器是可翻转的,因此需要多路复用器通过电缆正确地重新路由所采用的差分对上的数据。...在这种情况下,USB 3.0 / 3.1连接不使用RX / TX对,并且可以被其他USB Type-C功能使用,例如备用模式和USB供电协议。这些功能甚至可以利用所有可用的RX / TX差分对。...在此图中,DFP代表下游面向端口,该端口充当数据传输中的主机或电源。UFP表示上游面向端口,它是连接到主机或电力消费者的设备。 DFP通过Rp电阻上拉CC1和CC2引脚,但UFP通过Rd将它们拉低。...例如,在图5中,有效的Rp-Rd路径对应于CC1引脚。因此,CC2引脚连接到VCONN表示的电源。 09 SBU1和SBU2针脚 这两个引脚对应于仅在备用模式下使用的低速信号路径。...10 USB供电 在我们熟悉了USB-C标准的固定,让我们简单介绍一下USB供电和备用模式。 如上所述,使用USB Type-C标准的设备可以通过接口协商并选择适当水平的功率流。

    85630

    python 解析 GPS 模块数据

    本文记录如何用 python 接收串口 gps 数据并解析。...在 Ubuntu 中,插入 USB 的设备会出现在 /dev/tty* 中,首先需要确认该 GPS 设备的设备名称 可以使用几种不同的方法来确定接入的GPS模块是哪个设备: 列出所有串口: 使用lsusb...命令可以列出所有连接到电脑的USB设备,但可能不会直接显示GPS模块的详细信息。...如果您知道GPS模块是通过USB连接的,这个命令可以作为一个起点。 bash 复制 1 lsusb 使用dmesg: dmesg命令可以显示内核相关的日志信息,包括新插入的USB设备。...bash 复制 1 dmesg | grep tty 使用usb-devices: usb-devices命令可以提供关于USB设备的详细信息,包括设备的名字、制造商、型号和串行号。

    30910

    Python中的pyserial介绍

    它可以让我们在Python程序中直接与串口设备进行通信,如读取和写入串口数据。pyserial是一个跨平台的库,可以在多个操作系统上使用,包括Windows、Linux和MacOS。...在命令行中运行以下命令即可安装:plaintextCopy codepip install pyserial使用pyserial安装完pyserial后,我们就可以在Python程序中导入它并使用它的功能了...总结pyserial是一个方便易用的Python库,可以让我们在Python程序中轻松实现串口通信。它具有跨平台的特性,可以在不同操作系统上使用。...当使用pyserial进行串口通信时,实际应用场景可以是与硬件设备进行通信。...以下是一些常用的类似库的简要介绍:serial.tools:这是pyserial库中的一个子模块,它提供了一些额外的工具和功能,如端口扫描、串口监视器等。

    80510

    树莓派基础实验38:逻辑分析仪分析PWM、UART信号

    在树莓派基础实验37:pyserial模块通信实验中学习了Python的pyserial模块,通过串口与PC电脑的串口调试工具进行通信。   ...例如:一个待测信号使用200Hz采样率的逻辑分析仪,当参考电压设定为1.5V时,在测量时逻辑分析仪就会平均每5ms采取一个点,超过1.5V者为High(逻辑1),低于1.5V者为Low(逻辑0),而后的逻辑...在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。 而树莓派的PWM信号是不怎么标准和稳定的,下面的实验中我们将实际分析一下。...在树莓派基础实验37:pyserial模块通信实验中学习了Python的pyserial模块,通过串口与PC电脑的串口调试工具进行通信。...Type-C接口连接到笔记本电脑USB上哈,为方便拍照就没拍电脑。

    2.8K10

    如何在Jetson TX2上使用串口

    本文素材和教程均来自于Jetsonhacks网站,由Jetson开发者论坛重新整理 串行通信在计算机界是无所不在的。...非常好的事情是Jetson TX2使用的是2.54mm header,跟树莓派和Arduino的接口是一样的。在这里,我们用树莓派上的USB to TTL 串行线就可以。 ?...然后再把USB那头跟电脑链接 ? 2 软件 连接好以后,检查一下你是否可以在电脑上看到它。 $ lsusb ? 应该会列出设备名称,这个名字取决于你的USB-TTL线是用的什么芯片。...在这里,列出的是PL2303 Serial Port. ? 然后你要找到设备的USB端口映射: $ ls /dev/ttyUSB* ? 这将列出的USB端口。在视频里机器上只有一个设备。...3 配置 串行通信的一个重要组成部分是用于在设备之间进行通信的设置。 首先设置设备,在视频中设备是' /dev/ttyUSB0 '。 在Minicom中, 用Ctrl A Z唤起主菜单 ? ?

    7.4K21

    USB 电气信号

    全速设备、高速设备连接时,D+ 引脚的电平由低变高: 低速设备连接时,D- 引脚的电平由低变高: 断开 对于低速、全速设备,接到 Hub 时导致 D- 或 D+ 引脚变为高电平,断开设备后,D- 或...当软件出错时,我们也可以发出复位信号重新驱动设备。 那么,USB Hub 端口或 USB 控制器端口如何发出复位信号?发出 SE0 信号,并维持至少 10ms。...高速设备首先作为全速设备被识别出来,然后 Hub 如何确定它是否支持高速模式? Hub 端口如何监测一个新插入的 USB 设备能否工作于高速模式?...NRZI的编码方位为:对于数据 0,波形翻转;对于数据 1,波形不变。 使用 NRZI,发送端可以很巧妙地把"时钟频率"告诉接收端:只要传输连续的数据 0 即可。...而接收方在接收时只要接收到连续的 6 个 1 后,直接将后面的 0 删除即可恢复数据的原貌。

    41120

    linux拨号服务器如何创建爬虫ip池

    我们都知道,在进行爬虫采集时,经常会遇到网站各种发爬机制,如果有自己的ip池,将会让爬虫这项枯燥无味的工作变得非常简单。...这些爬虫ip服务器软件可以帮助你建立一个IP池,通过配置多个爬虫ip和端口,让网络爬虫程序通过这些爬虫ip服务器进行网络请求,从而实现IP池的效果。...在我们实际应用中,大家可能需要考虑到爬虫ip的稳定性、速度、成本等因素,选择适合自己需求的方式来创建IP池。同时,需要注意遵守网络爬虫的道德和法律规定,避免滥用爬虫ip或者违反目标网站的使用规定。...在Linux上创建爬虫ip可以通过以下步骤实现:1、首先,你需要一个支持拨号的网络接口,比如3G/4G USB调制解调器或者手机热点。确保你的Linux服务器可以通过该接口连接到互联网。...使用以下命令运行拨号连接:sudo pppd call provider 这将启动拨号连接,将你的Linux服务器连接到互联网。6、配置爬虫ip服务器。

    28010
    领券