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

C#开发usb hid 简易GUI调试工具记录

一 背景

嵌入式开发过程中,usb,tcp等都是经常使用到的功能,在上位机和设备通过usb,tcp通信时,我们往往要先制定协议,然后再去实现;功能ok后,我们要优先验证接口,基本功能是否ok,其他同事再去进行上位机开发。而网上找的第三方工具,不一定能满足我们的要求,比如你加了crc校验,使用第三方工具就要自己先计算好crc字节,再去发送,特别不便;因此如果能按照我们的需求,自己搞一个简单的USB或TCP GUI来验证,那将会是一个不错的选择。这里记录下使用C#开发usb hid gui过程中的一些历程。

二 记录

  1. VS C#可以用来开发三种类型应用
    (1) Windows应用程序—带UI的exe
    (2) 控制台应用程序------无UI,命令行输出
    (3) 类库----------------不能直接运行,就是封装成dll库供调用
    Ps: 注意winForms窗体应用是事件驱动的,不会像控制台程序那样顺序执行,而是等待用户交互
    eg:工程目录
bin                                   ---编译输出目录
obj                                   ---临时编译文件
Form1.cs                        --- C#主窗体代码
Form1.Designer.cs         ---窗体设计代码,自动生成
Form1.resx                    ---资源文件,存储窗体UI资源
Program.cs                   ---入口点  应用程序启动代码
WinformsUsb.csproj    ---C#项目文件
WinformsUsb.csproj.user
  1. VS 属性配置
目标操作系统版本    -----应用程序可运行的最低操作系统版本
  1. UI工具箱选择
    如果是传统的winforms应用,选择.NET Framework组件就可以;
    通用windows组件,适用于触摸屏等移动设备

  2. 关于控件属性的常见说明

AllowDrop	是否允许拖放
Anchor	    是否与父容器边缘保持固定
AutoScroll	控制容器控件是否在其内容超出显示区域时自动显示滚动条
Padding	    控件内容与控件的内边距
Size	    设置控件的宽和高
MinimumSize	设置控件的最小尺寸限制
Magin	    控件和其容器的外边距
Location	Top,left边缘的距离
Forecolor	前景色,即文本内容颜色
backcolor	背景色
Autosize	指定控件是否根据内容自动调整大小
  1. 关于exe
    要想生成独立的exe文件,编译完之后,要右键项目发布下才行;发布配置要配置成独立发布,生成单个文件
目标框架  --选net8.0
部署模式 --独立
文件发布选项 --勾选“生成单个文件”

三 usb 上位机开发总结

  1. 先创建winForms窗体应用,然后项目右键nuget包管理,安装usb库HidSharp—using HidSharp引入
  2. 按照gpt提示,一点点加程序调试就行了(先设计GUI,添加控件,然后在控件绑定逻辑里面去进行软件实现)
  3. 注意控件绑定的事件,如果做了修改,产生新的事件触发函数,旧的事件函数并不会自动去掉,需要手动取Designer.cs里面删除
  4. 对于引入的库,右键转到定义,可以看到其实现,基本不用再查资料

PS:由于公司网络限制,没法贴图片,只能文字描述了

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

相关文章:

  • 2025山东省职业院校技能大赛网络安全赛项样题
  • rk3588 驱动开发(二)第四章嵌入式 Linux LED 驱动开发实验
  • 初阶数据结构--排序算法(全解析!!!)
  • 【JVS更新日志】物联网、智能BI、智能APS 4.23更新说明!
  • Android仿今日头条Kotlin版本
  • gem5教程第五章 了解gem5默认配置脚本
  • eplan许可证与防火墙安全软件冲突
  • MobileNetV2:面向移动端的高效神经网络架构革新——突破轻量化模型的设计边界
  • 三目云台转动性能稳定性
  • C# 中的 `lock` 关键字本质
  • 3.6/Q1,GBD数据库最新文章解读
  • 鸿蒙中的并发线程间通信、线程间通信对象
  • 【计算机视觉】CV项目实战- SiamMask 单阶段分割跟踪器
  • 深入理解 java synchronized 关键字
  • 【C语言-选择排序算法】实现对十个数进行排序
  • 如何确定置信水平的最佳大小
  • 进行网页开发时,怎样把function()中变量值在控制台输出,查看?
  • 大模型框架技术全景与下一代架构演进
  • Ollama API 应用指南
  • leetcode - 字符串
  • 实现SpringBoot底层机制【Tomcat启动分析+Spring容器初始化+Tomcat 如何关联 Spring容器】
  • 微服务Nacos组件的介绍、安装、使用
  • 网络安全风险评估报告书模版(Word)
  • Python项目--基于计算机视觉的手势识别控制系统
  • 自建开源远程协助服务RustDesk —— 筑梦之路
  • 前端热门面试题day1
  • Redis 五大数据类型
  • 【Java面试笔记:基础】12.Java有几种文件拷贝方式?哪一种最高效?
  • 第一节:核心概念高频题-Vue3响应式原理与Vue2的区别
  • 一些基本的 Vue 规范