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

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

  • 编程语言 >

  • 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 图标
三菱 欧姆龙 西门子 施耐德 松下 台达
IOTSharp IOTGateway ABP FRAMEWORK Docker
亚克力音响 编程仙途:智驭万法
面试题与技巧 Python入门技能树 微软C#教程
首页 编程之美 工具下载 全国就业 流量地图 文心一言
GPS定位系统-VUE
ASP.NET+VUE GPS定位系统介绍(物联网) 系列源码下载页 asp.net 新建web api工程 asp.net 集成必要的组件和注入 asp.net 集成 EFCore mysql 数据库操作类 asp.net 自定义GPRS通讯协议 asp.net 集成 Tcp Server 服务 asp.net 添加web api接口 asp.net 补充功能 新建VUE工程 vue工程添加项目文件 新建Windows Server 2022虚拟机 Windows Server 2022 IIS运行环境配置 ASP.NET IIS发布 VUE工程 IIS发布 ASP.NET Docker发布(额外内容) VUE Docker发布(额外内容) 结束语(VUE框架)
asp.net 集成 EFCore mysql 数据库操作类
asp.net 集成 Tcp Server 服务
激萌の小宅 小宅博客 GPS定位系统-VUE

文章作者:激萌の小宅

促销:¥0

价格:¥0

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

    有效期

  • 0

    总销量

  • 0

    累计评价

asp.net 自定义GPRS通讯协议

        工程源码下载:GPS定位系统VUE版本源码下载

        在集成TCP通讯之前,我们需要提前制订好我们的通讯协议,同时也是为了后续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


举例

发送:CC 01 00 01 00 00 11 37 38 36 36 64 62 32 32 66 33 39 34 34 37 35 32 39 39 32 31 39 37 62 39 61 65 39 39 36 36 32 64 00 00 00 00 B5 F4 78 00 27 CB FD A4

接收:CC 01 00 01 00 00 01 00 CD


发送部分解析:

字段

含义

CC

网络识别码 0xCC

01

当前的设备类型 1

00 01

设备号 1

00 00

包号 0

11

功能码 0x11

37 38 36 36 64 62 32 32 66 33 39 34 34 37 35 32 39 39 32 31 39 37 62 39   61 65 39 39 36 36 32 64 00 00 00

用户ID:

7866db22f3944752992197b9ae99662d

00 B5 F4 78

精度:119.24600

00 27 CB FD

纬度:26.08125

A4

和校验


接收部分解析:

字段

含义

CC

网络识别码 0xCC

01

当前的设备类型 1

00 01

设备号 1

00 00

包号 0

11

功能码 0x01,反馈码

00

结果码,0x00成功,0x01失败

CD

校验码


asp.net 集成 EFCore mysql 数据库操作类
asp.net 集成 Tcp Server 服务

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

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

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

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

文章作者:激萌の小宅

促销:¥0

价格:¥0

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

    有效期

  • 0

    总销量

  • 0

    累计评价

asp.net 自定义GPRS通讯协议

        工程源码下载:GPS定位系统VUE版本源码下载

        在集成TCP通讯之前,我们需要提前制订好我们的通讯协议,同时也是为了后续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


举例

发送:CC 01 00 01 00 00 11 37 38 36 36 64 62 32 32 66 33 39 34 34 37 35 32 39 39 32 31 39 37 62 39 61 65 39 39 36 36 32 64 00 00 00 00 B5 F4 78 00 27 CB FD A4

接收:CC 01 00 01 00 00 01 00 CD


发送部分解析:

字段

含义

CC

网络识别码 0xCC

01

当前的设备类型 1

00 01

设备号 1

00 00

包号 0

11

功能码 0x11

37 38 36 36 64 62 32 32 66 33 39 34 34 37 35 32 39 39 32 31 39 37 62 39   61 65 39 39 36 36 32 64 00 00 00

用户ID:

7866db22f3944752992197b9ae99662d

00 B5 F4 78

精度:119.24600

00 27 CB FD

纬度:26.08125

A4

和校验


接收部分解析:

字段

含义

CC

网络识别码 0xCC

01

当前的设备类型 1

00 01

设备号 1

00 00

包号 0

11

功能码 0x01,反馈码

00

结果码,0x00成功,0x01失败

CD

校验码