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

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

  • 编程语言 >

  • 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命令流程说明
15、模拟GPRS数据通讯
17、asp.net发布\winform\wpf版本操作流程
激萌の小宅 小宅博客 GPS定位-EC-01G

文章作者:激萌の小宅

促销:¥0

价格:¥0

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

    有效期

  • 0

    总销量

  • 0

    累计评价

设备链接状态检测与提示

参考视频如下,视频来源《GPS定位系统-MVC-设备链接状态检测与提示》

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


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

IDE环境:Visual Studio 2022


        判断设备是否在线的原理很简单,就是判断设备的心跳是否存在,正常情况下,下位机设备是会定时上报心跳包的,当上位机接收到心跳包的时候,上位机会复位计数器,重新计数,如果没有接收到心跳包,当计数器达到某个阈值时,系统则认为设备离线了。


1、代码修改

        修改的代码主要有三个文件,如下图:

QQ截图20220918171516.jpg


Machine.cs

        该文件主要设置心跳包的超时阈值,代码如下,为了方便演示,博主这里设置了5秒

/// <summary>
/// 网络状态
/// <para>0:断线</para>
/// <para>1:连接</para>
/// <para>2:通讯异常</para>
/// </summary>
public int socketstate
{
    get
    {
        if (string.IsNullOrEmpty(ClientIP)) return 0;
        // 5秒内未接收到任何数据,则会强制设置成离线。
        if (DateTime.Now - lasttime > TimeSpan.FromSeconds(5))
        {
            ClientIP = null;
            return 0;
        }

        if (string.IsNullOrEmpty(errmsg)) return 1;
        return 2;
    }
}


HomeController.cs

        在控制器中新增一个API,供前端进行链接状态请求:

/// <summary>
/// 获取设备链接状态
/// </summary>
/// <returns></returns>
public ActionResult GetSocket()
{
    AjaxResult res = new AjaxResult() { Success = false };
    try
    {
        // 由于初始化的时候,设置的设备类型是1,设备号也是1,所以这边查询的时候也要按这个参数查询
        Link.Equipment.GpsModel sense = Link.Res.Socs.FirstOrDefault(v => v.equi == 1 && v.equino.ByteToInt() == 1) as Link.Equipment.GpsModel;
        if (sense != null)
        {
            res.Data = (sense.socketstate == 1) ? 1 : 0;
            res.Success = true;
        }
        else throw new Exception($"未查询到设备");
    }
    catch (Exception e)
    {
        res.ErrorCode = e.Message;
    }
    return Content(res.ToJson());
}


Index.cshtml

        最后是我们的前端,新增一个label,来显示设备在线、离线的状态信息:

<label id="devid" style="font-size: 18px;"> 在线 </label>

        我们每秒请求一次状态

/* 设备链接状态检测 */
setInterval(function () {
    $.post('Home/GetSocket', null, function (resJson) {
        var res = JSON.parse(resJson);
        if (res.Success) {
            if (res.Data == 1)
            {
                document.getElementById('devid').innerHTML = '在线';
            }
            else
            {
                document.getElementById('devid').innerHTML = '离线';
            }
        }
    });
}, 1000);


2、效果演示

link (4).gif


15、模拟GPRS数据通讯
17、asp.net发布\winform\wpf版本操作流程

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

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

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

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

文章作者:激萌の小宅

促销:¥0

价格:¥0

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

    有效期

  • 0

    总销量

  • 0

    累计评价

设备链接状态检测与提示

参考视频如下,视频来源《GPS定位系统-MVC-设备链接状态检测与提示》

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


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

IDE环境:Visual Studio 2022


        判断设备是否在线的原理很简单,就是判断设备的心跳是否存在,正常情况下,下位机设备是会定时上报心跳包的,当上位机接收到心跳包的时候,上位机会复位计数器,重新计数,如果没有接收到心跳包,当计数器达到某个阈值时,系统则认为设备离线了。


1、代码修改

        修改的代码主要有三个文件,如下图:

QQ截图20220918171516.jpg


Machine.cs

        该文件主要设置心跳包的超时阈值,代码如下,为了方便演示,博主这里设置了5秒

/// <summary>
/// 网络状态
/// <para>0:断线</para>
/// <para>1:连接</para>
/// <para>2:通讯异常</para>
/// </summary>
public int socketstate
{
    get
    {
        if (string.IsNullOrEmpty(ClientIP)) return 0;
        // 5秒内未接收到任何数据,则会强制设置成离线。
        if (DateTime.Now - lasttime > TimeSpan.FromSeconds(5))
        {
            ClientIP = null;
            return 0;
        }

        if (string.IsNullOrEmpty(errmsg)) return 1;
        return 2;
    }
}


HomeController.cs

        在控制器中新增一个API,供前端进行链接状态请求:

/// <summary>
/// 获取设备链接状态
/// </summary>
/// <returns></returns>
public ActionResult GetSocket()
{
    AjaxResult res = new AjaxResult() { Success = false };
    try
    {
        // 由于初始化的时候,设置的设备类型是1,设备号也是1,所以这边查询的时候也要按这个参数查询
        Link.Equipment.GpsModel sense = Link.Res.Socs.FirstOrDefault(v => v.equi == 1 && v.equino.ByteToInt() == 1) as Link.Equipment.GpsModel;
        if (sense != null)
        {
            res.Data = (sense.socketstate == 1) ? 1 : 0;
            res.Success = true;
        }
        else throw new Exception($"未查询到设备");
    }
    catch (Exception e)
    {
        res.ErrorCode = e.Message;
    }
    return Content(res.ToJson());
}


Index.cshtml

        最后是我们的前端,新增一个label,来显示设备在线、离线的状态信息:

<label id="devid" style="font-size: 18px;"> 在线 </label>

        我们每秒请求一次状态

/* 设备链接状态检测 */
setInterval(function () {
    $.post('Home/GetSocket', null, function (resJson) {
        var res = JSON.parse(resJson);
        if (res.Success) {
            if (res.Data == 1)
            {
                document.getElementById('devid').innerHTML = '在线';
            }
            else
            {
                document.getElementById('devid').innerHTML = '离线';
            }
        }
    });
}, 1000);


2、效果演示

link (4).gif