海萤物联网ntp服务上线
文章目录海萤物联网ntp服务上线开源介绍服务读取时间服务1读取时间服务2.返回的是结构体自定义错误码示例读取时间读取时区为2的时间读取时区为-6的时间读取结构体格式时间源码main.goconfig.go海萤物联网ntp服务上线本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.在线文档地址开源github上的项目地址gitee上的项目地址介绍基于Golang编写在海萤物联网提供校时服务。本机地址是0x2141000000000404服务服务号服务1读取时间12读取时间2.返回的是结构体读取时间服务1CON请求空或者带符号的1个字节。当CON请求为空时则默认为读取的是北京时间时区8。也可以带1个字节表示时区号。这个字节是有符号的int8。小技巧可以使用0x100减去正值即负值。比如8对应的无符号数是0x100-8248。ACK应答当前时间的字符串当前时间字符串的格式2006-01-02 15:04:05 -0700 MST读取时间服务2.返回的是结构体CON请求格式与读取时间服务1一致ACK应答struct{// 时区uint8 TimeZone uint16 Year uint8 Month uint8 Day uint8 Hour uint8 Minute uint8 Second// 星期uint8 Weekday}自定义错误码错误码含义0x40内部错误0x41接收格式错误示例读取时间resp,err:tziot.Call(pipe,0x2141000000000004,1,1000,[]uint8{})fmt.Println(err:,err,time:,string(resp))输出err: 0 time: 2021-03-20 06:34:18 0800 CST读取时区为2的时间resp,err:tziot.Call(pipe,0x2141000000000004,1,1000,[]uint8{2})fmt.Println(err:,err,time:,string(resp))输出err: 0 time: 2021-03-20 00:36:31 0200 CST读取时区为-6的时间resp,err:tziot.Call(pipe,0x2141000000000004,1,1000,[]uint8{0x100-6})fmt.Println(err:,err,time:,string(resp))输出err: 0 time: 2021-03-19 16:36:06 -0600 CST读取结构体格式时间resp,_:tziot.Call(pipe,0x2141000000000004,2,3000,[]uint8{8})varack AckRidGetTime2_dcom.BytesToStruct(resp,ack)fmt.Println(ack)输出{8 2021 3 30 12 11 28 2}源码最新源码请查看仓库。main.go// Copyright 2021-2021 The jdh99 Authors. All rights reserved.// 网络校时服务// Authors: jdh99 jdh821163.compackagemainimport(github.com/jdhxyy/dcomgithub.com/jdhxyy/lagangithub.com/jdhxyy/tziotntp/configtime)consttagntp// 应用错误码const(// 内部错误errorCodeInternalError0x40// 接收格式错误errorCodeRxFormat0x41)// rid号const(// 读取时间.返回的是字符串ridGetTime11// 读取时间.返回的是结构体ridGetTime22)// ACK格式typeAckRidGetTime2struct{// 时区TimeZoneuint8Yearuint16Monthuint8Dayuint8Houruint8Minuteuint8Seconduint8// 星期Weekdayuint8}funcmain(){err:lagan.Load(0)iferr!nil{panic(err)}lagan.EnableColor(true)lagan.SetFilterLevel(lagan.LevelInfo)_,errtziot.BindPipeNet(config.LocalIA,config.LocalPwd,config.LocalIP,config.LocalPort)iferr!nil{panic(err)return}tziot.Register(ridGetTime1,ntpService1)tziot.Register(ridGetTime2,ntpService2)select{}}// ntpService1 校时服务// 返回值是应答和错误码.错误码为0表示回调成功,否则是错误码funcntpService1(pipeuint64,srcIAuint64,req[]uint8)([]uint8,int){addr:dcom.PipeToAddr(pipe)vartimeZoneintiflen(req)0{timeZone8}elseiflen(req)1{timeZoneint(int8(req[0]))}else{lagan.Warn(tag,addr:%v ia:0x%x ntp failed.len is wrong:%d,addr,srcIA,len(req))returnnil,errorCodeRxFormat}t:getTime(timeZone)lagan.Info(tag,addr:%v ia:0x%x ntp time:%v,addr,srcIA,t)return[]uint8(t.Format(2006-01-02 15:04:05 -0700 MST)),0}funcgetTime(timeZoneint)time.Time{t:time.Now().UTC()secondsEastOfUTC:int((time.Duration(timeZone)*time.Hour).Seconds())loc:time.FixedZone(CST,secondsEastOfUTC)tt.In(loc)returnt}// ntpService2 校时服务// 返回值是应答和错误码.错误码为0表示回调成功,否则是错误码funcntpService2(pipeuint64,srcIAuint64,req[]uint8)([]uint8,int){addr:dcom.PipeToAddr(pipe)vartimeZoneintiflen(req)0{timeZone8}elseiflen(req)1{timeZoneint(int8(req[0]))}else{lagan.Warn(tag,addr:%v ia:0x%x ntp failed.len is wrong:%d,addr,srcIA,len(req))returnnil,errorCodeRxFormat}t:getTime(timeZone)lagan.Info(tag,addr:%v ia:0x%x ntp time:%v,addr,srcIA,t)varack AckRidGetTime2 ack.TimeZoneuint8(timeZone)ack.Yearuint16(t.Year())ack.Monthuint8(t.Month())ack.Dayuint8(t.Day())ack.Houruint8(t.Hour())ack.Minuteuint8(t.Minute())ack.Seconduint8(t.Second())ack.Weekdayuint8(t.Weekday())data,err:dcom.StructToBytes(ack)iferr!nil{lagan.Error(tag,addr:%v ia:0x%x ntp failed.struct to bytes error:%v,addr,srcIA,err)returnnil,errorCodeInternalError}returndata,0}config.go// Copyright 2021-2021 The jdh99 Authors. All rights reserved.// 配置文件// Authors: jdh99 jdh821163.compackageconfigimportfmt// 系统参数const(LocalIA0x2141000000000004LocalIP0.0.0.0LocalPort12930)varLocalPwdstringfuncinit(){fmt.Println(please input password:)_,err:fmt.Scanln(LocalPwd)iferr!nil{panic(err)}}

相关新闻

海萤物联网教程:Go SDK

海萤物联网教程:Go SDK

文章目录海萤物联网教程:Go SDK简介特点开源安装背景知识API默认参数绑定管道注册服务调用目的节点服务请求和应答数据格式完整示例ntp服务器开源地址ntp服务介绍读取时间服务1读取时间服务2.返回的是结构体开放服务示例读取时间服务1读取时间服务2海萤物联网教程&a…

2026/10/13 20:11:34 阅读更多 →
ANSYS apdl命令流笔记12-------仔细剖分glue(粘结)命令

ANSYS apdl命令流笔记12-------仔细剖分glue(粘结)命令

仔细剖分glue(粘结)命令一、作用二、使用条件三、使用方法:vglue、aglue、lglue四、使用glue命令后ansys对体、面、线、关键点的划分规则五、小测试 一、作用 把模型的重合边界变成公共边界,模型的个数不变 在使用粘结之前的两个体&#xff0…

2026/10/12 19:56:36 阅读更多 →
终极指南:Ethermint-archive与Cosmos生态interoperability实现跨链价值交换的完整教程

终极指南:Ethermint-archive与Cosmos生态interoperability实现跨链价值交换的完整教程

终极指南:Ethermint-archive与Cosmos生态interoperability实现跨链价值交换的完整教程 【免费下载链接】ethermint-archive Ethereum on Tendermint using Cosmos-SDK! 项目地址: https://gitcode.com/gh_mirrors/et/ethermint-archive Ethermint-archive作为…

2026/10/12 20:58:27 阅读更多 →

最新新闻

三强版 Codex 一键部署包,本地桌面 AI 自动化全流程实操

三强版 Codex 一键部署包,本地桌面 AI 自动化全流程实操

🔍前言 本文介绍 Codex Harness 一键安装包的部署方案,无需解压,也无需繁琐的环境配置,新手也能快速上手。该方案同时支持 Windows 与 macOS 双平台,跟随向导几步即可完成安装、登录与模型密钥配置。文中完整演示了技…

2026/10/13 20:11:08 阅读更多 →
SpringBoot多环境日志配置:用logback-spring.xml+Profile实现环境隔离

SpringBoot多环境日志配置:用logback-spring.xml+Profile实现环境隔离

1. 为什么SpringBoot项目要把日志配置拆成多环境不管你信不信,我见过太多SpringBoot项目,日志配置就一个logback.xml躺在resources目录里,从入职第一周用到项目上线,开发环境一堆DEBUG刷屏没人管,生产环境出了问题想查…

2026/10/13 20:11:07 阅读更多 →
MATLAB中AES-256加解密实战:Java桥接与文件安全

MATLAB中AES-256加解密实战:Java桥接与文件安全

简介:这份资源面向学习密码学与MATLAB编程的读者,提供AES-256位加密算法在MATLAB 2012B环境下的完整实现代码,帮助理解对称加密的内部运作机制。压缩包共16个文件,约448KB,以13个m脚本为核心,涵盖密钥扩展、…

2026/10/13 20:11:07 阅读更多 →
C++结构体与结构体数组:从定义、内存布局到排序实践

C++结构体与结构体数组:从定义、内存布局到排序实践

如果你翻过C教材的目录,多半会在“结构体”这一章停几秒钟,然后想:这不就是把几个变量捆在一起吗?有什么好讲的。我工作之后才意识到,结构体恰恰是C里最容易被低估的基础设施,链表、树、图形控件的属性表、…

2026/10/13 20:11:07 阅读更多 →
Spring Boot JPA 实战指南:从实体映射到查询优化的避坑经验

Spring Boot JPA 实战指南:从实体映射到查询优化的避坑经验

1. 为什么我要认真聊聊 Spring Boot 里的 JPA做后端开发这些年,我接触过的持久层方案不算少。从最早手写 JDBC 拼 SQL,到后来用 MyBatis 写 XML 映射文件,再到 Spring Boot 项目里大量使用 JPA,每一种方案都有它适合的场景。但要说…

2026/10/13 20:11:07 阅读更多 →
Sufer 8.0英文版等值线图实战:从散点插值到批量出图的完整避坑指南

Sufer 8.0英文版等值线图实战:从散点插值到批量出图的完整避坑指南

简介:Surfer 8.0英文版是Golden Software公司推出的专业地形图绘制与三维建模软件,面向地质、环境科学、工程及地球科学领域的从业者与学习者,用于将离散数据转化为连续格网表面并生成专业图件。压缩包共234个文件,约12.41MB&…

2026/10/13 20:10:07 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →