1 Star 2 Fork 6

羁绊 / KoboldCom

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

KoboldCom

KoboldCom是一个串口通信类库,提供自定义多协议异步解析、数据模型转换等功能。

封装最复杂的数据流异步收发,以及根据协议把接收的数据进行模型映射转换等功能。

类库提供了常见的16进制字节流协议(HexProtocolAnalyzer)和文本字节串协议(TextProtocolAnalyzer)的解析,所以可以使用KoboldCom,快速实现指定协议的数据收发

Wiki How

常见的通讯协议一般是这样的:头+数据长度+数据正文+校验

AA 44 05 01 02 03 04 05 EA

还有一种长这个样子:

$GPGGA,121252.000,3937.3032,N,11611.6046,E,1,05,2.0,45.9,M,-5.7,M,,0000*77

其中$表示开始;GPGGA:命令字;*表示结尾;77校验

这两种协议很常见,所以KoboldCom默认提供了这两种常用的协议解析类(HexProtocolAnalyzer类和TextProtocolAnalyzer类)。

Demo

运行截图

Code Demo

可直接参考/Demo中的例子,包含完整的多协议处理

Usage

// 创建通讯协议和模型转换方法
// Protocol1.cs
...Analyze(){
    // 处理数据模型转换
}


// 创建通讯器
var communicator = new KoboldCom.Communicator(new KoboldCom.SerialPort(), new MyProtocols());
// 通讯器处理接收原始数据
communicator.OnRawDataReceived += Communicator_OnRawDataReceived;
// 自定义模型转换后续操作
Protocol1.OnDataAnalyzed += ProtocolText_OnDataAnalyzed;

Events

KoboldCom.Communicator对上层开放了两个事件

  1. OnDataAnalyzed 从串口接收的数据中解析到符合协议要求的数据包,会触发的事件

  2. OnDataReceived 串口收到新数据,会触发该事件

可以给这两个事件分别绑定处理方法就可以进行对应操作。

More

如果这两种协议的解析方式不适合你的项目要求,可以继承抽象ProtocolAnalyzer类编写子类,一般只需要复写SearchBuffer方法,,也就是数据到协议的处理逻辑就可以了,其他的不需要改动。

TODO:

  • i18n
  • TextProtocolAnalyzer CheckData 数据校验支持

串口模拟与调试

Windows

Thanks

触发要做这个东西的灵感来自文章

License

MIT

The MIT License (MIT) Copyright (c) 2015 Shizhy Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

串口协议读取 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/gdid_admin/KoboldCom.git
git@gitee.com:gdid_admin/KoboldCom.git
gdid_admin
KoboldCom
KoboldCom
master

搜索帮助