您好,
会员登录 快速注册
退出 ( 条未读消息)
关于本站 意见反馈 首页

公告:小宅博客网可以开发票了,需要发票的,去群里找群主哈!!
全部文章分类
  • 人工智能 >

  • 编程语言 >

  • WPF系列 >

  • ASP.NET系列 >

  • Linux >

  • 数据库 >

  • 嵌入式 >

  • WEB技术 >

  • PLC系列 >

  • 微服务与框架 >

  • 小宅DIY >

  • 学习资料 >

OpenCv基础 ANN车牌识别 yolov5车牌识别 指针式仪表识别 ROS系列 YOLO Halcon Detectron2 昇腾AI ChatGPT在线体验 英伟达JETSON ChatGLM ChatTTS FunASR 地平线 ByteTrack 魔搭社区 LangChain
C C# C++ Python Java Go
WPF
ASP.NET小功能 GPS定位系统-MVC GPS定位系统-VUE ASP.NET WebRTC
Linux Linux内核 Shell MakeFile
MySql SqlServer Oracle
STM8 STM32 51单片机
VUE入门 HTML JavaScript CSS layui镜像网站 ElementUi中文官网 element-plus 图标 Vue - Ant Design官方
三菱 欧姆龙 西门子 施耐德 松下 台达
IOTSharp IOTGateway ABP FRAMEWORK Docker
亚克力音响 编程仙途:智驭万法
面试题与技巧 Python入门技能树 微软C#教程
首页 编程之美 工具下载 全国就业 流量地图 文心一言
GPS定位-EC-01G
ASP.NET GPS定位系统介绍(物联网) GPS定位EC-01G模块系列教程源码下载页(物联网) 1、新建.net core web工程 2、添加自定义登录页面 3、添加百度地图页面 4、添加后台日志系统 5、添加mysql数据存储 6、添加SqlServer数据存储(额外内容) 7、用户注册与登录功能实现 8、添加坐标报表页面(用于遍历地图坐标) 9、前后端数据交互与报表数据展示 10、报表数据的编辑与修改 11、用户登录与退出 12、自定义GPRS通讯协议 13、添加TCP通讯功能(接收) 14、添加TCP通讯功能(发送) 15、模拟GPRS数据通讯 16、设备链接状态检测与提示 17、asp.net发布\winform\wpf版本操作流程 18、GPS协议与AT命令流程说明
11、用户登录与退出
13、添加TCP通讯功能(接收)
激萌の小宅 小宅博客 GPS定位-EC-01G

文章作者:激萌の小宅

促销:¥0

价格:¥0

配送方式: 购买后立即生效(如购买异常,请联系站长)
付款之后一定要等待自动跳转结束,否则购买可能会失败
  • 0 天

    有效期

  • 0

    总销量

  • 0

    累计评价

自定义GPRS通讯协议

参考视频如下,视频来源《GPS定位系统-MVC-自定义GPRS通讯协议》

备注:视频中的部分操作可能会因为Visual Studio的版本差异有所不一样,总体操作流程都是一样的,请自行尝试。视频中采用的是安信可的A9G模块,和当前系列使用的EC-01G模块在AT指令上可能存在差异,这里以博客内容为主,视频主要是讲操作流程。


工程源码下载:GPS定位EC-01G模块系列教程源码下载页(物联网)

IDE环境:Visual Studio 2022


        整个项目的前端部分,在上一节中已经基本完成了,当前章节主要是教大家如何指定通信协议,不讲代码,同时也是为了后续TCP通信做准备。在物联网通讯中,通讯协议的设计,有时也是直接决定你系统稳定性的一个关键指标。

        关于我们协议中使用的数据类型说明如下:

数据类型

描述及要求

BYTE

无符号单字节整型(字节,8位)

WORD

无符号双字节整型(字,16位)

DWORD

无符号四字节整型(双字,32位)

BYTE[n]

n字节

BCD[n]

8421码,n字节

STRING

GBK编码,若无数据,置空

        

        我们物联网通信协议一般都是按modbus的协议格式来设计的,通常都会包含如下几个内容:

1、网络识别码:

        网络识别码也是校验方式的一种,其主要功能是用于识别数据包的包头,在串口等低速率或者高速率的情况下,如果接收处理的不好,就很容易出现数据被拆包和和拼包的现象。此时,这个字段就会变的非常有用,可以用来识别一个包的起始位置,然后对拼包或者拆包数据进行重新组装,从而实现数据还原,当然,该字段你不一定只用一个字符来表示,同样的,你也可以改成任意N个字符来作为包头使用。


2、数据包长度:

        通常该字段并非一定需要,可有可无。该字段通常是为了说明当前数据包有多长,当出现拼包或者拆包现象时,你就可以通过该字段知道,当前数据包一共有多少个字符,这个能让你更准确的还原完整的数据包。当然了,当你同类型功能码的数据载荷长度是固定的时候,该字段的作用就不是特别大了,完全可以忽略,当你载荷长度属于动态的时候,并且很容易发生拆包和拼包现象的时候,最好还是加上该字段,这对你还原数据还是很有用的。

        在当前GPS定位系统项目中,由于数据载荷长度基本都是固定的,所以在设计协议时,该字段我们目前可以忽略。


3、设备类型:

        该字段的作用是用于区分下位机类型的,比如GPS设备你可以定义为1,温湿度设备,你可以定义为2,以此类推。

        一般情况下,同种类型的设备共用同种设备类型ID。


4、设备号:

        设备号的作用是:当同种设备的类型的数量很多时,设备号的作用是对每个设备进行独立编号。这样,系统就能对下位机设备进行详细区分了。


5、包号:

        包号的作用主要是为了确保每个通讯包的唯一性,当相同的命令需要重复发送时,此时就可以通过包号来做区分,该字段通常是按不断累加的方式进行递增的,当达到最大值时,再从0开始重新计数,通常,我们可以通过判断包号的连续性,来判断通讯的稳定情况,从而确保系统的稳定性。


6、功能码:

        功能码的作用主要是为了说明当前数据包属于哪种功能,比如:开、关或者查询等等。


7、数据:    

        该字段属于当前数据包主体部分,保存了当前数据包需要发送的所有数据内容,并且数据长度可以动态变化。

        当前GPS定位系统项目中,我们的GPS坐标数据就是放在该字段中。


8、校验码:

        校验方式,你可以采用单字节的异或校验,或者双字节的CRC16校验,在数据较为简单的情况下,我们一般采用异或校验。如果通讯数据种类较多,数据长度经常动态变化,我这里推荐采用CRC16校验。


        按照前面的说明,我们最终的协议格式如下:

网络识别码

设备类型

设备号

包号

功能码

数据

校验码

BYTE

BYTE

WORD

WORD

BYTE

BYTE[n]

BYTE


11、用户登录与退出
13、添加TCP通讯功能(接收)

友情链接: CSDN激萌の小宅 95知识库 自考题库 罗分明个人网络博客 精益编程leanboot

小宅博客  www.bilibili996.com All Rights Reserved. 备案号: 闽ICP备2024034575号

网站经营许可证  福建省福州市 Copyright©2021-2026 版权所有

小宅博客
首页 智能家居 地图定位
公告:小宅博客网可以开发票了,需要发票的,去群里找群主哈!!

文章作者:激萌の小宅

促销:¥0

价格:¥0

配送方式: 购买后立即生效(如购买异常,请联系站长)
付款之后一定要等待自动跳转结束,否则购买可能会失败
  • 0 天

    有效期

  • 0

    总销量

  • 0

    累计评价

自定义GPRS通讯协议

参考视频如下,视频来源《GPS定位系统-MVC-自定义GPRS通讯协议》

备注:视频中的部分操作可能会因为Visual Studio的版本差异有所不一样,总体操作流程都是一样的,请自行尝试。视频中采用的是安信可的A9G模块,和当前系列使用的EC-01G模块在AT指令上可能存在差异,这里以博客内容为主,视频主要是讲操作流程。


工程源码下载:GPS定位EC-01G模块系列教程源码下载页(物联网)

IDE环境:Visual Studio 2022


        整个项目的前端部分,在上一节中已经基本完成了,当前章节主要是教大家如何指定通信协议,不讲代码,同时也是为了后续TCP通信做准备。在物联网通讯中,通讯协议的设计,有时也是直接决定你系统稳定性的一个关键指标。

        关于我们协议中使用的数据类型说明如下:

数据类型

描述及要求

BYTE

无符号单字节整型(字节,8位)

WORD

无符号双字节整型(字,16位)

DWORD

无符号四字节整型(双字,32位)

BYTE[n]

n字节

BCD[n]

8421码,n字节

STRING

GBK编码,若无数据,置空

        

        我们物联网通信协议一般都是按modbus的协议格式来设计的,通常都会包含如下几个内容:

1、网络识别码:

        网络识别码也是校验方式的一种,其主要功能是用于识别数据包的包头,在串口等低速率或者高速率的情况下,如果接收处理的不好,就很容易出现数据被拆包和和拼包的现象。此时,这个字段就会变的非常有用,可以用来识别一个包的起始位置,然后对拼包或者拆包数据进行重新组装,从而实现数据还原,当然,该字段你不一定只用一个字符来表示,同样的,你也可以改成任意N个字符来作为包头使用。


2、数据包长度:

        通常该字段并非一定需要,可有可无。该字段通常是为了说明当前数据包有多长,当出现拼包或者拆包现象时,你就可以通过该字段知道,当前数据包一共有多少个字符,这个能让你更准确的还原完整的数据包。当然了,当你同类型功能码的数据载荷长度是固定的时候,该字段的作用就不是特别大了,完全可以忽略,当你载荷长度属于动态的时候,并且很容易发生拆包和拼包现象的时候,最好还是加上该字段,这对你还原数据还是很有用的。

        在当前GPS定位系统项目中,由于数据载荷长度基本都是固定的,所以在设计协议时,该字段我们目前可以忽略。


3、设备类型:

        该字段的作用是用于区分下位机类型的,比如GPS设备你可以定义为1,温湿度设备,你可以定义为2,以此类推。

        一般情况下,同种类型的设备共用同种设备类型ID。


4、设备号:

        设备号的作用是:当同种设备的类型的数量很多时,设备号的作用是对每个设备进行独立编号。这样,系统就能对下位机设备进行详细区分了。


5、包号:

        包号的作用主要是为了确保每个通讯包的唯一性,当相同的命令需要重复发送时,此时就可以通过包号来做区分,该字段通常是按不断累加的方式进行递增的,当达到最大值时,再从0开始重新计数,通常,我们可以通过判断包号的连续性,来判断通讯的稳定情况,从而确保系统的稳定性。


6、功能码:

        功能码的作用主要是为了说明当前数据包属于哪种功能,比如:开、关或者查询等等。


7、数据:    

        该字段属于当前数据包主体部分,保存了当前数据包需要发送的所有数据内容,并且数据长度可以动态变化。

        当前GPS定位系统项目中,我们的GPS坐标数据就是放在该字段中。


8、校验码:

        校验方式,你可以采用单字节的异或校验,或者双字节的CRC16校验,在数据较为简单的情况下,我们一般采用异或校验。如果通讯数据种类较多,数据长度经常动态变化,我这里推荐采用CRC16校验。


        按照前面的说明,我们最终的协议格式如下:

网络识别码

设备类型

设备号

包号

功能码

数据

校验码

BYTE

BYTE

WORD

WORD

BYTE

BYTE[n]

BYTE