C# WPF上位机开发(usb设备访问)

news2024/11/26 7:45:35

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        目前很多嵌入式设备都支持usb访问,特别是很多mcu都支持高速usb访问。和232、485下个比较,usb的访问速度和它们基本不在一个数量级上面。因此,使用usb进行上位机和嵌入式模块进行通信,一般会有比较好的交互体验。那么对于c# wpf来说,应该如何usb激进型输入访问呢?

1、usb设备插入到pc电脑

        一般嵌入式模块的usb接口插入之后,通过windows的设备管理器,可以看到一个陌生的usb设备被搜索到,但是当前这个设备还没有对应的驱动与之相匹配,所以大概是红色的状态。

2、用zadig安装驱动

        usb设备既然还没有驱动,那么这个时候一般用zadig软件给它匹配一个通用驱动。通常也就是libusbK这样的驱动。也正是因为这样的驱动,c# wpf才可以用LibsUsbDotNet接口对这个嵌入式设备进行usb访问。

3、安装LibUsbDotNet开源库

        目前可以用NuGet安装LibUsbDotNet开源库,这个其他库安装的方法是一样的。

4、引入开源库命名空间

        安装好开源库之后,通过using关键字就可以将相关关键字引入进来了。

using LibUsbDotNet;
using LibUsbDotNet.Main;

5、初始化设备

        usb设备的初始化其实比较简单,主要就是vendorId和productId,这两个数据不同的厂家一般是不一样的。

int vendorId = 0x1234; // modify it according to real device
int productId = 0xabcd;

UsbDeviceFinder usbFinder = new UsbDeviceFinder(vendorId, productId); 
UsbDevice usbDevice = UsbDevice.OpenUsbDevice(usbFinder);

6、读取数据、写入数据

        发现了usb数据之后,剩下来的事情就好办了。一般就有两种操作,一种是读操作,一种是写操作。读操作的部分基本也是套路,

UsbEndpointReader reader = usbDevice.OpenEndpointReader(ReadEndpointID.Ep01);
byte[] readBuffer = new byte[1024];
int bytesRead;
ErrorCode ec1 = reader.Read(readBuffer, 1000, out bytesRead);

        写数据的操作是这样的,

UsbEndpointWriter writer = usbDevice.OpenEndpointWriter(WriteEndpointID.Ep02);
byte[] writeBuffer = Encoding.Default.GetBytes("Hello, USB!");
int bytesWritten;
ErrorCode ec2 = writer.Write(writeBuffer, 1000, out bytesWritten);

7、关闭usb设备

        如果usb停止操作了,一般直接调用对应的接口直接关闭usb就可以了。

usbDevice.Close();
UsbDevice.Exit();

8、usb协议

        一般来说,usb通信只是方式和手段,通信的内容是需要构建一套协议的。有什么cmd、什么参数、长度多少、crc校验是什么,一般都要说清楚。这个协议和232、485、网络的协议本质上是一回事,只不过usb物理上更快一点而已。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1320983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 全栈体系【四阶】(七)

第四章 机器学习 六、多项式回归 1. 什么是多项式回归 线性回归适用于数据呈线性分布的回归问题。如果数据样本呈明显非线性分布,线性回归模型就不再适用(下图左),而采用多项式回归可能更好(下图右)。例…

100GPTS计划-AI写诗PoetofAges

地址 https://chat.openai.com/g/g-Cd5daC0s5-poet-of-ages https://poe.com/PoetofAges 测试 创作一首春天诗歌 创作一首夏天诗歌 创作一首秋天诗歌 创作一首冬天诗歌 微调 诗歌风格 语气:古典 知识库

打响指针的第一枪:指针家族

前言 指针其实是我们学习C语言中最难的知识点,很多人在学习指针的时候会被绕晕,包括博主也是,当初百思不得其解,脑袋都要冒烟了,本来打算在学习指针的时候就写一篇博客,但是当初自己的能力还是没有办法去完…

智能优化算法应用:基于人工电场算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于人工电场算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于人工电场算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工电场算法4.实验参数设定5.算法结果6.…

Linux发行版比较:Ubuntu、CentOS、Red Hat与其他系统的优劣分析

导言 Linux作为开源操作系统,有众多不同的发行版,每个发行版都有其独特的特性和适用场景。本文将聚焦于比较Ubuntu、CentOS、Red Hat和其他系统,深入分析它们的优势、用途以及在不同领域的应用。Linux操作系统的生态系统中,Ubuntu…

【Hive】——DDL(TABLE)

1 查询指定表的元数据信息 如果指定了EXTENDED关键字,则它将以Thrift序列化形式显示表的所有元数据。 如果指定了FORMATTED关键字,则它将以表格格式显示元数据。 describe formatted student;2 删除表 如果已配置垃圾桶且未指定PURGE&…

用23种设计模式打造一个cocos creator的游戏框架----(二十)解析器模式

1、模式标准 模式名称:解析器模式 模式分类:行为型 模式意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 结构图: 适用于&#xff1…

【论文阅读笔记】A Recent Survey of Vision Transformers for Medical Image Segmentation

Khan A, Rauf Z, Khan A R, et al. A Recent Survey of Vision Transformers for Medical Image Segmentation[J]. arXiv preprint arXiv:2312.00634, 2023. 【论文概述】 本文是关于医学图像分割中视觉变换器(Vision Transformers,ViTs)的…

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现 漏洞名称影响版本影响版本 漏洞复现环境搭建漏洞利用 漏洞名称 影响版本 Apache CouchDB是一个开源的NoSQL数据库,专注于易用性和成为“完全拥抱web的数据库”。它是一个使用JSON作为数据存储格式&…

城市智能图书柜需求说明书

1. 简介 1.1 项目概括 本项目主要实现智能图书柜对图书的借出、还回、续借、查询、上下架、盘点的功能,对于读者,可以进行读者证的办理,读者信息的录入和完善。 1.2 项目背景 ​ 目前大量读者距离图书馆较远,无法方便、快捷地…

董宇辉“小作文事件”:东方甄选的危机与挑战

导言 近期,东方甄选公司的创始人董宇辉因涉及“小作文事件”而引起轩然大波。东方甄选作为一家在招聘领域崭露头角的公司,经历了充满曲折的发展历程。本文将深入探讨这一事件对东方甄选公司的发展带来的危机和挑战,以及公司可能采取的解决策略…

阿里云主导《Serverless 计算安全指南》国际标准正式立项!

日前,在韩国召开的国际电信联盟电信标准分局 ITU-T SG17 全会上,由阿里云主导的《Serverless 计算安全指南》国际标准正式立项成功。 图 1 项目信息 在现今数字化时代,Serverless 计算正逐渐成为云计算的一个新的发展方向,其灵活…

智能优化算法应用:基于蛾群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蛾群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蛾群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蛾群算法4.实验参数设定5.算法结果6.参考文献7.MA…

docker在线安装nginx

1、查看所有镜像 1、不带容器卷常规启动nginx,命令如下 docker run --name nginx-test -p 8089:80 -d a6bd71f48f68 2、在宿主机创建/usr/local/data/nginxdocker/目录,在此目录下创建html和logs文件夹,然后将容器内的 nginx.conf 和 html 下…

React基础巩固日志1

书写了一篇vue3的基础构建之后,不能带着各位一起学习vue3了,因为我要面试上海的前端岗位了,所以从现在开始,我要带着大家一起学习React了。 以下是我使用react书写的要掌握的react的知识点: ** ** 那么下面我们就一一通…

美颜SDK技术对比,深入了解视频美颜SDK的工作机制

如何在实时视频中呈现更加自然、美丽的画面,而这正是美颜SDK技术发挥作用的领域之一。本文将对几种主流视频美颜SDK进行深入比较,以揭示它们的工作机制及各自的优劣之处。 随着科技的不断进步,美颜技术已经从简单的图片处理发展到了视频领域…

【Filament】绘制矩形

1 前言 Filament环境搭建中介绍了 Filament 的 Windows 和 Android 环境搭,绘制三角形中介绍了绘制纯色和彩色三角形,本文将使用 Filament 绘制纯色和彩色矩形。 2 绘制矩形 本文项目结构如下,完整代码资源 → Filament绘制矩形。 2.1 自定义…

【Matlab算法】灰狼优化算法问题(Grey Wolf Optimization)(附MATLAB完整代码)

灰狼优化算法问题 前言算法描述:算法特点: 正文代码实现 前言 灰狼优化算法(Grey Wolf Optimization,GWO) 是一种模拟灰狼社会行为的启发式优化算法。它是由Seyedali Mirjalili等人于2014年提出的,灵感来源…

Acrel-1000DP分布式光伏系统在某重工企业18MW分布式光伏中应用——安科瑞 顾烊宇

摘 要:分布式光伏发电特指在用户场地附近建设,运行方式以用户侧自发自用、余电上网,且在配电系统平衡调节为特征的光伏发电设施,是一种新型的、具有广阔发展前景的发电和能源综合利用方式,它倡导就近发电,就…

React实现全局Loading

css #__loading {position:fixed;top: 0;left: 0;z-index: 99999;display: flex;align-items: center;justify-content: center;width: 100%;height: 100%;background: rgba(0, 0, 0, 0); } 页面代码 使用了antd的Spin组件 import React from react import ReactDOM from re…