串口协议解析

胡呀胡 2020-09-25 06:05:13
C#可以制作 解析串口接收数据 的工具吗?有没有实例可以参考?
...全文
5379 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
胡呀胡 2020-09-27
  • 打赏
  • 举报
回复
引用 8 楼 wanghui0380的回复:
[quote=引用 7 楼 weixin_50931001 的回复:][quote=引用 3 楼 ziqi0716的回复:]搜索关键字: C# 串口上位机软件开发 用C#写起来还是挺方便的,主要就是使用这个类:SerialPort. 其余的要看你自己的具体需求,比如你的数据协议是自定义的,那你自己设计协议的各种定义,大概包括包头,数据,包尾,校验等. 现有的协议你可以参考下:Modbus协议. GitHub上有C#写的串口助手软件,这个是比较通用的,可以参考下数据解析实现.
感谢感谢,我现在串口小工具,学那些无私大佬的教程分享,很粗略的做出来了,能简单的实现收发数据。还差实现返回数据的解析,每次都根据协议解析数据,感觉一直重复工作,就想着能不能制作个自动解析数据的小工具,但是刚接触这些东西,没啥思路,不知道怎么下手[/quote] 根据你的回复,我查了一下你上一个帖子,我们说,如果你是困惑与上一个帖子,那么我们说,此问题无解。 因为协议是双方定制的,所以没人知道你们双方的脑袋到底想什么。 比如我谁便贴几个个东西,你来告诉我他们怎么个自定义法 code1:“pochnding<<xiaoqing<<<<<<<<<<<<<<<<<<<<<<<<< g123456783chn4201012f090918019201101<<<<<<14” code2:“FD571 0730AWUH017” code3 “M1SURNAME/FIRSTNM ABCDEF WUHAAAAF 9999O096C99999999 348>5184 B1A 2A 0 XB FQTVNUMBER25FQTV Y |” ok,你告诉我怎么解析,如果我不告诉你他们是什么?你来自动解析一下看看。 如果我不告诉你这是撒,你是解析不了的(coder1是护照编码,code2是 国内登机牌编码,code3是国际登机牌编码) 所以,你想自动只能是知道协议。那么我们会做的事情是“正则表达式”,“BNF词法”,“结构体”,mapreduce,Torstring,format,因为俺们不是神,没有万能解[/quote] 比如说我手上有一份协议,每次接收到数据,我都要根据协议来一个个翻译出来是什么意思,所以我想实现一个小工具,把我接收的数据输入,然后这个“小工具”能根据我手上的这份协议自动解析出来我需要的东西。其实就是想偷懒
wanghui0380 2020-09-27
  • 打赏
  • 举报
回复
引用 7 楼 weixin_50931001 的回复:
[quote=引用 3 楼 ziqi0716的回复:]搜索关键字: C# 串口上位机软件开发 用C#写起来还是挺方便的,主要就是使用这个类:SerialPort. 其余的要看你自己的具体需求,比如你的数据协议是自定义的,那你自己设计协议的各种定义,大概包括包头,数据,包尾,校验等. 现有的协议你可以参考下:Modbus协议. GitHub上有C#写的串口助手软件,这个是比较通用的,可以参考下数据解析实现.
感谢感谢,我现在串口小工具,学那些无私大佬的教程分享,很粗略的做出来了,能简单的实现收发数据。还差实现返回数据的解析,每次都根据协议解析数据,感觉一直重复工作,就想着能不能制作个自动解析数据的小工具,但是刚接触这些东西,没啥思路,不知道怎么下手[/quote] 根据你的回复,我查了一下你上一个帖子,我们说,如果你是困惑与上一个帖子,那么我们说,此问题无解。 因为协议是双方定制的,所以没人知道你们双方的脑袋到底想什么。 比如我谁便贴几个个东西,你来告诉我他们怎么个自定义法 code1:“pochnding<<xiaoqing<<<<<<<<<<<<<<<<<<<<<<<<< g123456783chn4201012f090918019201101<<<<<<14” code2:“FD571 0730AWUH017” code3 “M1SURNAME/FIRSTNM ABCDEF WUHAAAAF 9999O096C99999999 348>5184 B1A 2A 0 XB FQTVNUMBER25FQTV Y |” ok,你告诉我怎么解析,如果我不告诉你他们是什么?你来自动解析一下看看。 如果我不告诉你这是撒,你是解析不了的(coder1是护照编码,code2是 国内登机牌编码,code3是国际登机牌编码) 所以,你想自动只能是知道协议。那么我们会做的事情是“正则表达式”,“BNF词法”,“结构体”,mapreduce,Torstring,format,因为俺们不是神,没有万能解
胡呀胡 2020-09-27
  • 打赏
  • 举报
回复
引用 3 楼 ziqi0716的回复:
搜索关键字: C# 串口上位机软件开发 用C#写起来还是挺方便的,主要就是使用这个类:SerialPort. 其余的要看你自己的具体需求,比如你的数据协议是自定义的,那你自己设计协议的各种定义,大概包括包头,数据,包尾,校验等. 现有的协议你可以参考下:Modbus协议. GitHub上有C#写的串口助手软件,这个是比较通用的,可以参考下数据解析实现.
感谢感谢,我现在串口小工具,学那些无私大佬的教程分享,很粗略的做出来了,能简单的实现收发数据。还差实现返回数据的解析,每次都根据协议解析数据,感觉一直重复工作,就想着能不能制作个自动解析数据的小工具,但是刚接触这些东西,没啥思路,不知道怎么下手
耗子哭死猫 2020-09-27
  • 打赏
  • 举报
回复
猫猫串口网络调试助手V4.2 可以参考
wanghui0380 2020-09-27
  • 打赏
  • 举报
回复
引用 2 楼 weixin_50931001 的回复:
感谢大哥提醒,我不是想用别人的“工具”。我是想制作一个适合自己用的小工具,尽量减少重复的工作。因为是个小白,所以想着有没有可以参照借鉴的实例,来找点启发。
在还不能走之前,我们无法给你其他的回答。随便在nuget上搜索“ SerialPort”,"modbus"你可以找到一堆源代码,自己研究。我们无意带方向,带节奏。 和博客园那种务虚和无病XX的风格不同,这里的人讲务实。东西可以给,但能不能领悟看自己。 这东西其实和串口没啥关系tcp也是一样的 ,所以如果你在nuget上搜这些,你会发现基本趋同的设计 Itransfer ------------传输接口 Ipipe--------------------管道处理 ICoder-----------------编码/解码 so,东西到这里就ok了,剩下的都是实现细节,细节部分自己品 给个目前抽象的比较简单,比较明了的代码。这项目是最近2年的新现目,所以站在前人的基础上,抽象的就比较清晰了,当然和前辈们不同,这项目不打算实现通用编解码,他自己给了一个透明代理包装,这样可以统一传输编码,简化项目。(应用层编码保留) https://github.com/rsocket/rsocket-net/blob/master/RSocket.Core/Transports/SocketTransport.cs 这是人家的socket传输层,ok,你看明白了,谁说我们不能是SerialPortTransport
雪狼孤竹 2020-09-27
  • 打赏
  • 举报
回复
你可以自己查 SerialPort 网上有很多的例子。
ziqi0716 2020-09-27
  • 打赏
  • 举报
回复
搜索关键字: C# 串口上位机软件开发 用C#写起来还是挺方便的,主要就是使用这个类:SerialPort. 其余的要看你自己的具体需求,比如你的数据协议是自定义的,那你自己设计协议的各种定义,大概包括包头,数据,包尾,校验等. 现有的协议你可以参考下:Modbus协议. GitHub上有C#写的串口助手软件,这个是比较通用的,可以参考下数据解析实现.
胡呀胡 2020-09-27
  • 打赏
  • 举报
回复
引用 12 楼 雪狼孤竹的回复:
“小工具”自动解析出你需要的东西。这个目前应该是没有的,想法挺好,但是实现不易。 首先,你得得到所有的通讯协议,包括标准的、自建的。或者说你常用到的协议,然后都写入程序中。 其次,你这个其实和串口通讯没什么直接关系,你只是需要解析得到的数据而已。 但你解析前,仍然需要根据协议的规定来验证这条数据的正确性,所以你需要告诉小工具,接到的数据是哪条协议下获得的。通过协议验证该条数据是否为有效的正确数据。 之后,你还得告诉小工具,你要获得什么结果,比如16进制的字符串,ASCII码的字符串等等。 最后,通过你以上的操作,你就能够获得你想要的数据了。 希望你能够实现该工具!!加油吧!!
感谢提供的思路
胡呀胡 2020-09-27
  • 打赏
  • 举报
回复
引用 14 楼 wanghui0380的回复:
在来看他另外一个产品 http://www.geshe.com/zh-cn/products/ggenesis 你会发现,其实他的目的是测试。而不是你想的偷懒,不写代码。 想不写代码,你最终只能走google protocol,apache thift这条路线,定义DSL,然后自动生成
教诲的是,不能偷懒
胡呀胡 2020-09-27
  • 打赏
  • 举报
回复
引用 13 楼 wanghui0380的回复:
你如果实在想仿,可以对标 http://www.geshe.com/zh-cn/products/gbeacon 说实话,这个工具虽然收费,但是还算OK,只是于你的想法完全不同。我们不是要偷懒,我们只是有时候想在不编码的情况下去测试自动反馈和响应(也就是他说激励,这样我们可以在没有硬件的情况下去测试功能,比如你可以仿一个modubs的从机,观察设置线圈和返回线圈这些功能,当然如果要自动反馈,我们就的有限度的进行解析,注:只是有限度解析) 如果你一定要想做你的想的东西,我们说先想一下为啥后面出现了xml,json,google protocol,apache thift这些东西,如果以前都能完全自动,后面那几个东西凭啥出来,尤其后面两个google,apache都疯么? so,有一个东西你可以参考,就是google protocol 他有idl,遵循最传统的三元表达 类型:长度:数据 在从BNF里拿出表达式规则,然后按表达式规则处理
一盆冷水😭,非常感谢这么耐心的答疑解惑
wanghui0380 2020-09-27
  • 打赏
  • 举报
回复
在来看他另外一个产品 http://www.geshe.com/zh-cn/products/ggenesis 你会发现,其实他的目的是测试。而不是你想的偷懒,不写代码。 想不写代码,你最终只能走google protocol,apache thift这条路线,定义DSL,然后自动生成
wanghui0380 2020-09-27
  • 打赏
  • 举报
回复
你如果实在想仿,可以对标 http://www.geshe.com/zh-cn/products/gbeacon 说实话,这个工具虽然收费,但是还算OK,只是于你的想法完全不同。我们不是要偷懒,我们只是有时候想在不编码的情况下去测试自动反馈和响应(也就是他说激励,这样我们可以在没有硬件的情况下去测试功能,比如你可以仿一个modubs的从机,观察设置线圈和返回线圈这些功能,当然如果要自动反馈,我们就的有限度的进行解析,注:只是有限度解析) 如果你一定要想做你的想的东西,我们说先想一下为啥后面出现了xml,json,google protocol,apache thift这些东西,如果以前都能完全自动,后面那几个东西凭啥出来,尤其后面两个google,apache都疯么? so,有一个东西你可以参考,就是google protocol 他有idl,遵循最传统的三元表达 类型:长度:数据 在从BNF里拿出表达式规则,然后按表达式规则处理
雪狼孤竹 2020-09-27
  • 打赏
  • 举报
回复
“小工具”自动解析出你需要的东西。这个目前应该是没有的,想法挺好,但是实现不易。 首先,你得得到所有的通讯协议,包括标准的、自建的。或者说你常用到的协议,然后都写入程序中。 其次,你这个其实和串口通讯没什么直接关系,你只是需要解析得到的数据而已。 但你解析前,仍然需要根据协议的规定来验证这条数据的正确性,所以你需要告诉小工具,接到的数据是哪条协议下获得的。通过协议验证该条数据是否为有效的正确数据。 之后,你还得告诉小工具,你要获得什么结果,比如16进制的字符串,ASCII码的字符串等等。 最后,通过你以上的操作,你就能够获得你想要的数据了。 希望你能够实现该工具!!加油吧!!
胡呀胡 2020-09-27
  • 打赏
  • 举报
回复
感谢大哥,我不想要你的软件,我想学会怎么做
大鱼> 2020-09-27
  • 打赏
  • 举报
回复
链接:https://pan.baidu.com/s/16qqt0Eybsu-XttBAKq7iuQ 提取码:dj02
胡呀胡 2020-09-26
  • 打赏
  • 举报
回复
感谢大哥提醒,我不是想用别人的“工具”。我是想制作一个适合自己用的小工具,尽量减少重复的工作。因为是个小白,所以想着有没有可以参照借鉴的实例,来找点启发。
  • 打赏
  • 举报
回复
系统网络消息信令逻辑千变万化,基本的首发 bytes 的语句在 vb.net、c# 入门教程中都有。基本上“工具”都是国际大型软件公司的各类封装接口的转换,例如把其它的几百种协议转为 ODBC 的数据库查询协议等等,大厂的协议在于推广自家的平台,可以开源。而小作坊或者个人的“工具”则大多是为了忽悠人,卖一点儿钱的,基本上没啥性价比,但是人家也当宝贝而不会给你看。所以对于基本功最好是自己学会,否则当你用“工具”时也会吃哑巴亏。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧