# myPort **Repository Path**: brand_zhou/my-port ## Basic Information - **Project Name**: myPort - **Description**: 通用上位机 可自动解析通信协议 可根据协议自动返回命令 可根据解析内容形成曲线 可保存配置 可保存数据 - **Primary Language**: C# - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 23 - **Forks**: 3 - **Created**: 2021-08-16 - **Last Updated**: 2024-12-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: 上位机, 自定义协议, 物联网, 嵌入式, 串口 ## README # myPort 该代码库不再更新,新版代码库请移步至: ## 交流群 建了个QQ交流群,不介意的话加一下? 点击链接加入群聊【z先生的嵌入式交流】: ![输入图片说明](%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20230412170727.png) ### 介绍 通用上位机
可使用串口、tcp服务器和tcp客户端
可自动解析通信协议,通信协议可编写任意多条
可根据协议自动返回命令
可根据解析内容形成曲线
可保存配置
可保存数据
可加载python脚本
#### 界面说明 ![介绍](/img/介绍.jpg "介绍") 用户在**接收参数**区域写入用于接收的参数,在**设置参数**区域写入用于设置的参数.
接收到数据之后,软件根据协议配置中的协议来匹配接收参数
在发送命令区域填写命令,发送命令中的参数变量可以自动填入设置参数对应的值 #### 协议配置 点击协议配置->接收协议出现如下界面进行协议配置 ![协议配置](/img/协议配置.jpg "协议配置") 双击空白协议行新增协议 ![新增协议](/img/新增协议.jpg "新增协议") 点击新增或者双击已有行编辑 ![新增协议](/img/协议编辑.jpg "编辑协议") 具体协议内容可以通过双击后的页面详情来查看
协议格式根据先后顺序进行匹配。 #### 发送命令 双击发送命令中的任意命令打开下图配置 ![发送命令](/img/发送命令.jpg "发送命令") 命令格式用法和协议配置相同.

勾选是否连发,软件将会在n毫秒后自动重复发送 #### 接收参数 勾选图像,该参数被匹配时会在**图形**区域生成一条曲线,值为匹配值 #### 参数计算 如果参数是绑定字符串的参数,那么可以在绑定时加入运算符。比如绑定字段直接填入ID+2,那么系统将会自动匹配ID+2的值。
该功能适用于绑定参数和python函数参数 #### 单元测试 发送参数可以进行覆盖测试,启动单元测试后,每次发送,如果发送命令中含有单元测试的参数,那么单元测试参数将会根据规则进行改变
#### 快捷键 在协议配置中,可以使用F1~F5快速新增具体内容
### 曲线的使用 勾选接收参数中的曲线将会在下一次参数匹配时,将值画在曲线上.点击鼠标左键拖到可以放大曲线,点击右键可以缩小曲线.

如果曲线数量超过两百个,曲线会自动移动,滚动鼠标滚轮可以查看历史数据. ### 测试 假设我们有一段协议内容如下 |帧头 | 长度 |命令|命令内容|校验| |-|-|-|-|-| |55 aa|整包长度 0x0c|设置名字 0x01|名称|数据|校验和| 收到该包后我们需要回复如下协议 |帧头 |命令|命令内容| |-|-|-| |aa 55|整包长度 0x0b|设置名字 0x01|名称|数据+1|校验和| 我们设置的名称是"设备",其对应的utf-8编码是 ``` e8 ae be e5 a4 87 00 ``` 最后的00用于结束符 那么我们发送的数据就应该是 ``` :55 AA 0C 01 E8 AE BE E5 A4 87 00 2D 9D ``` 然后另一个就会回复 ``` AA 55 0C 01 E8 AE BE E5 A4 87 00 2E 9E ``` 其中,客户端的data参数由于用了单元测试,所以每次发送过后data参数都会自动加1 打开两个软件,其中一个导入**bin/Release/test/service.myPort**配置. 一个导入**bin/Release/test/client.myPort**配置.
在导入client.myPort的软件上点击发送命令test的发送就可以看到效果 ![测试](/img/客户端发送.jpg "测试") ![测试](/img/服务器.jpg "测试") ### 软件架构 基于c# winform 使用第三方UI库 [SunnyUI](https://gitee.com/yhuse/SunnyUI) 使用VS2019 社区版进行开发 ### 安装教程 打开myPort.exe即可 注意SunnyUI.dll和SunnyUI.Common.dll需要和myPort.exe在同级目录下 ### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ### 往后工作 1、tcp客户端发送就回复该客户端,而不是现在的所有客户端都回复