当前位置: 首页 > backend >正文

QuecPython+USBNET:实现USB网卡功能

USBNET 概述

USBNET(USB Networking) 是一种通过 USB 接口 实现网络通信的技术,允许设备通过 USB 连接模拟以太网(Ethernet over USB)或直接进行网络数据传输。它广泛应用于嵌入式设备、工业控制、虚拟机和便携式设备等场景。

USBNET 的核心特点

  • 基于 USB 接口:利用 USB 物理层实现网络通信,无需传统网线(如 RJ45)。
  • 高速传输:支持 USB 2.0(480 Mbps)、USB 3.0(5 Gbps)甚至 USB4(40 Gbps)。
  • 低延迟:相比无线网络(Wi-Fi),USBNET 延迟更低,适合实时数据传输。
  • 即插即用:热插拔支持,设备连接后自动识别并配置网络。

USBNET 的常见工作类型

ECM 模式(Ethernet Control Model)

  • 协议:USB 标准协议,兼容性强(Linux/Android/macOS 原生支持)。
  • 适用场景:嵌入式 Linux 设备、工业控制器。

RNDIS 模式(Remote NDIS)

  • 协议:微软主导的 USB 网络协议,Windows 默认支持。
  • 适用场景:Windows 设备调试(如 Android USB 共享网络)。

NCM(Network Control Model)

  • 协议:USB-IF 标准协议,比 ECM 更高效。
  • 适用场景:5G 模块、高性能嵌入式设备。

功能概述

主要介绍如何使用 QuecPython 开发板实现 USBNET 功能,并为设备提供网络。典型的编程工作流程分为以下几个部分:

  • 导入 USBNET 包
  • 设置 USB 网卡工作类型
  • 打开 USB 网卡

导入 USBNET 包

首先从 misc 中导入 USBNET 包。

from misc import USBNET

设置工作类型

该方法用于设置 USB 网卡的工作类型。

USBNET.set_worktype(type)

API 详情请参考 USBNET.set_worktype。

打开 USB 网卡

该方法用于打开 USB 网卡功能。

USBNET.open()

API 详情请参考 USBNET.open。

应用案例

以 EC600MCNLE QuecPython 开发板为例,创建 USB 网卡,并未 PC 端提供网络。示例代码如下:

# 首先从misc中导入USBNET包
>>> from misc import USBNET
>>> from misc import Power# 查询当前USBNET的工作模式,1 表示ECM模式, 3 表示RNDIS模式。
>>> USBNET.get_worktype()
1# 设置为RNDIS模式
>>> USBNET.set_worktype(USBNET.Type_RNDIS)
0# 重启模组,用以生效之前配置的模式
>>> Power.powerRestart()# 重启模组后,导入所需的包
>>> from misc import USBNET
>>> import dataCall>>> USBNET.get_worktype()
3# 查询模组是否拨号成功
>>> dataCall.getInfo(1,0)
(1, 0, [1, 0, '10.62.213.130', '211.138.180.4', '211.138.180.5'])# 有拨号信息后打开USB网卡
>>> USBNET.open()
0

通过 QPYcom 输入以上代码后即可开启 USB 网卡,查看 PC 端网络连接界面,可以看到多出来一个网络可供选择。

打开 cmd,输入 ipconfig,可以看到基本网络信息都已获取,此时关闭其余网络接口,只保留 USB 网卡的网络接口,电脑也可以正常上网。

此时可以通过电脑浏览器访问网页。比如浏览器输入 https://python.quectel.com 即可正常访问。

http://www.xdnf.cn/news/2096.html

相关文章:

  • 真.从“零”搞 VSCode+STM32CubeMx+C <2>调试+烧录
  • docker-compose安装RustDesk远程工具
  • 工业电子测量中的安全隐患与解决方案——差分探头的技术优势解析
  • 如何在SpringBoot中通过@Value注入Map和List并使用YAML配置?
  • 分账解决连锁酒店资金分配难题
  • Langchain文本摘要
  • Exposure Adjusted Incidence Rate (EAIR) 暴露调整发病率:精准量化疾病风险
  • 基于Python或Java实现的本地知识库文档问答系统
  • 解锁大数据新视野:构建强大可观测平台
  • Scala语法基础
  • window和ubuntu自签证书
  • SD3302 驱动:轻量级模块化,一键集成,高效易用。
  • PTC加热片详解(STM32)
  • kvm物理接口发现的脚本COLT_CMDB_KVM_IFACE.sh
  • Qt指ModbusTcp协议的使用
  • 潇洒郎:ssh 连接Windows WSL2 Linux子系统 ipv6地址转发到ipv4地址上
  • BTSRB德国交通标志数据集.csv文件提取数据转换成.json文件
  • UVM 寄存器模型中的概念
  • 国标GB28181视频平台EasyGBS视频监控平台助力打造校园安防智能化
  • 剖析经典二维动画的制作流程,汲取经验
  • SpringBoot集成LiteFlow实现轻量级工作流引擎
  • Java多线程同步有哪些方法?
  • 基于STM32、HAL库的ADS1256IDBR模数转换器ADC驱动程序设计
  • Python实验4 列表与字典应用
  • Apipost免费版、企业版和私有化部署详解
  • LeetCode 解题思路 44(Hot 100)
  • 蛋白质大语言模型ESM介绍
  • ​Stable Diffusion:Diffusion Model
  • 深度学习实战106-大模型LLM+股票MCP Server的股票分析和投资建议应用场景
  • 软件研发管理方法工具总结