PTP时间同步例程
下面是一个基本的PTP时间同步例程,可以使用Arduino或其他类似的微控制器实现:
步骤1:准备硬件 - 一个Arduino或类似的微控制器 - 一个以太网模块
步骤2:导入库文件 #include <Ethernet.h> #include <EthernetUdp.h>
步骤3:定义网络参数 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC地址 IPAddress ip(192, 168, 1, 177); // 本地IP地址 IPAddress gateway(192, 168, 1, 1); // 网关 IPAddress subnet(255, 255, 255, 0); // 子网掩码 unsigned int localPort = 1234; // 本地端口
步骤4:创建UDP对象 EthernetUDP Udp;
步骤5:初始化网络 Ethernet.begin(mac, ip, gateway, subnet); Udp.begin(localPort);
步骤6:定义PTP数据包结构 struct PTPPacket { uint8_t transportSpecific; uint8_t messageType; uint8_t versionPTP; uint8_t reserved1; uint64_t sourcePortIdentity; uint16_t sequenceId; uint8_t controlField; uint8_t logMessageInterval; };
步骤7:定义PTP数据包类型 #define PTP_SYNC 0x0 #define PTP_DELAY_REQ 0x1 #define PTP_FOLLOW_UP 0x8 #define PTP_DELAY_RESP 0x9
步骤8:定义PTP消息处理函数 void handlePTPMessage() { PTPPacket ptpPacket; if (Udp.parsePacket()) { Udp.read((byte*)&ptpPacket, sizeof(ptpPacket)); switch (ptpPacket.messageType) { case PTP_SYNC: // 处理同步消息 break; case PTP_DELAY_REQ: // 处理延时请求消息 break; case PTP_FOLLOW_UP: // 处理跟随消息 break; case PTP_DELAY_RESP: // 处理延时响应消息 break; default: break; } } }
步骤9:发送PTP消息 void sendPTPMessage(uint8_t messageType, uint64_t sourcePortIdentity, uint16_t sequenceId) { PTPPacket ptpPacket; ptpPacket.transportSpecific = 0; ptpPacket.messageType = messageType; ptpPacket.versionPTP = 2; ptpPacket.reserved1 = 0; ptpPacket.sourcePortIdentity = sourcePortIdentity; ptpPacket.sequenceId = sequenceId; ptpPacket.controlField = 0; ptpPacket.logMessageInterval = 0; Udp.beginPacket(IPAddress(224, 0, 1, 129), 319); // PTP多播地址和端口 Udp.write((byte*)&ptpPacket, sizeof(ptpPacket)); Udp.endPacket(); }
步骤10:主程序循环 void loop() { handlePTPMessage(); sendPTPMessage(PTP_SYNC, 0, 0); // 发送同步消息 delay(1000); // 每秒发送一次 } 这是一个基本的PTP时间同步例程,可以根据实际需求进行修改和扩展。
相关文章:
PTP时间同步例程
下面是一个基本的PTP时间同步例程,可以使用Arduino或其他类似的微控制器实现: 步骤1:准备硬件 - 一个Arduino或类似的微控制器 - 一个以太网模块 步骤2:导入库文件 #include <Ethernet.h> #include <EthernetUdp.h>…...
【ES6】ES6遍历属性的方法
在ES6中,有几种遍历属性的方法,其中包括: 使用for…in循环和Object.keys()方法。 let obj {a: 1, b: 2, c: 3}; for (let key in obj) {console.log(obj[key]); }使用for…of循环和Object.values()方法。 let obj {a: 1, b: 2, c: 3}; f…...
【Web系列二十四】使用JPA简化持久层接口开发
目录 环境配置 1、引入依赖 配置文件 代码编写 实体类创建 JPA常用注解 Service与ServiceImpl Service ServiceImpl Controller Dao 三种实现Dao功能方式 1.继承接口,使用默认接口实现 2.根据接口命名规则默认生成实现 3.自定义接口实现(类似MyBatis…...
Flink流批一体计算(16):PyFlink DataStream API
目录 概述 Pipeline Dataflow 代码示例WorldCount.py 执行脚本WorldCount.py 概述 Apache Flink 提供了 DataStream API,用于构建健壮的、有状态的流式应用程序。它提供了对状态和时间细粒度控制,从而允许实现高级事件驱动系统。 用户实现的Flink程…...
软考高级系统架构设计师系列论文九十三:论计算机网络的安全性设计
软考高级系统架构设计师系列论文九十三:论计算机网络的安全性设计 一、计算机网络安全性设计相关知识点二、摘要三、正文四、总结一、计算机网络安全性设计相关知识点 软考高级系统架构设计师:计算机网络...
山西电力市场日前价格预测【2023-08-29】
日前价格预测 预测明日(2023-08-29)山西电力市场全天平均日前电价为321.48元/MWh。其中,最高日前电价为372.80元/MWh,预计出现在19: 30。最低日前电价为272.85元/MWh,预计出现在12: 30。 价差方向预测 1: 实…...
计算机毕设 基于深度学习的人脸专注度检测计算系统 - opencv python cnn
文章目录 1 前言2 相关技术2.1CNN简介2.2 人脸识别算法2.3专注检测原理2.4 OpenCV 3 功能介绍3.1人脸录入功能3.2 人脸识别3.3 人脸专注度检测3.4 识别记录 4 最后 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新…...
ES 7.6 - APi基础操作篇
ES7.6-APi基础操作篇 前言相关知识索引相关创建索引查询索引查询所有索引删除索引关闭与打开索引关闭索引打开索引 冻结与解冻索引冻结索引解冻索引 映射相关创建映射查看映射新增字段映射 文档相关(CURD)新增文档根据ID查询修改文档全量覆盖根据ID选择性修改根据条件批量更新 …...
【Go 基础篇】Go语言循环结构:实现重复执行与迭代控制
介绍 循环结构是编程中的重要概念,它允许我们重复执行一段代码块,或者按照一定的条件进行迭代控制。Go语言提供了多种循环结构,包括for、while和do-while等,用于不同的场景下实现循环操作。本篇博客将深入探讨Go语言中的循环结构…...
RabbitMQ笔记-RabbitMQ基本术语
RabbitMQ基本术语 相关概念; 生产者(Producer):投递消息。消息:消息体(payload)标签(label);生产者把消息交给rabbitmq,rabbitmq会根据标签把消息发给感兴趣…...
Git向远程仓库与推送以及拉取远程仓库
理解分布式版本控制系统 1.中央服务器 我们⽬前所说的所有内容(⼯作区,暂存区,版本库等等),都是在本地也就是在你的笔记本或者计算机上。⽽我们的 Git 其实是分布式版本控制系统!什么意思呢? 那我们多人…...
PostgreSQL+SSL链路测试
SSL一个各种证书在此就不详细介绍了,PostgreSQL要支持SSL的前提需要打开openssl选项,包括客户端和服务器端。 测试过程。 1. 生成私钥 root用户: mkdir -p /opt/ssl/private mkdir -p /opt/ssl/share/ca-certificateschmod 755 -R /opt/ss…...
服务器(容器)开发指南——code-server
文章目录 code-server简介code-server的安装与使用code-server的安装code-server的启动code-server的简单启动指定配置启动code-server code-server环境变量配置 code-server端口转发自动端口转发手动添加转发端口 nginx反向代理code-servercode-server打包开发版镜像 GitHub官…...
C++贪吃蛇(控制台版)
C自学精简实践教程 目录(必读) 目录 主要考察 需求 输入文件 运行效果 实现思路 枚举类型 enum class 启动代码 输入文件data.txt 的内容 参考答案 学生实现的效果 主要考察 模块划分 文本文件读取 UI与业务分离 控制台交互 数据抽象 需求 用户输入字母表示方…...
Java之字符串实践
功能概述 字符串是Java编程中常用的数据类型,本文对String部分常见功能做了对应实践以及分析。 功能实践 场景1:字符串比较 用例代码 Test public void test_string_compare() {String s1 "abc";String s2 s1;String s5 "abc&quo…...
BM20 数组中的逆序对
描述 解题思路:归并排序 分治:分治即“分而治之”,“分”指的是将一个大而复杂的问题划分成多个性质相同但是规模更小的子问题,子问题继续按照这样划分,直到问题可以被轻易解决;“治”指的是将子问题单独进…...
高德猎鹰轨迹查询相关接口
高德猎鹰轨迹官网:服务管理-API文档-开发指南-猎鹰轨迹服务 | 高德地图API 轨迹查询 httpclient的post // post方法请求 创建轨迹 private static void createTrace() {String key "高德注册的key";String sid "服务id"; // 服务idString…...
整理总结新手开始抖音小店经营:常见问题及解决办法
抖音小店作为一种新兴的电商模式,在短时间内获得了广泛的关注和使用。然而,对于新手来说,抖音小店经营可能会遇到一些问题。下面是四川不若与众总结的一些常见的问题以及相应的解决办法。 问题一:产品选择困难 对于新手来说&#…...
4-1-netty
非阻塞io 服务端就一个线程,可以处理无数个连接 收到所有的连接都放到集合channelList里面 selector是有事件集合的 对server来说优先关注连接事件 遍历连接事件...
hive 动态分区-动态分区数量太多也会导致效率下降只设置非严格模式也能执行动态分区
hive 动态分区-动态分区数量太多也会导致效率下降&只设置非严格模式也能执行动态分区 结论 在非严格模式下不开启动态分区的功能的参数(配置如下),同样也能进行动态分区数据写入,目测原因是不严格检查SQL中是否指定分区或者…...
33-47 树
33. 二叉树的中序遍历 class Solution(object):def inorderTraversal(self, root):res []self._inorder(root, res)return resdef _inorder(self, node, res):if node:self._inorder(node.left, res)res.append(node.val)self._inorder(node.right, res) 34. 二叉树的最大深…...
Claude Desktop Pro Client:打造本地化AI工作台的架构设计与实践
1. 项目概述与核心价值最近在折腾AI助手本地化部署的时候,发现了一个挺有意思的项目,叫“Claude Desktop Pro Client”。光看名字,你可能会觉得这又是一个给Claude官方桌面端套壳的第三方客户端,但实际深入把玩之后,我…...
Churrera CLI:命令行模板引擎,提升开发运维自动化效率
1. 项目概述:一个为开发者“挤奶油”的命令行工具如果你经常在终端里和 Git、Docker、Kubernetes 或者各种云服务 API 打交道,那你一定对那种重复、繁琐的命令行操作深恶痛绝。每次都要回忆、复制粘贴那一长串参数,或者在不同的项目目录间跳转…...
开源CRM Clawnify:轻量自托管,专为SaaS与AI Agent设计
1. 项目概述:一个为SaaS和AI Agent设计的开源CRM如果你正在为你的SaaS产品寻找一个轻量、可自托管、且能无缝嵌入的客户关系管理(CRM)模块,或者你厌倦了HubSpot、Salesforce这类重量级SaaS的复杂配置、高昂费用和API限制ÿ…...
Reflexion框架:让LLM通过自我反思实现智能迭代优化
1. 项目概述:从“试错”到“反思”的智能进化如果你也曾在调试一段复杂代码时,对着报错信息反复尝试,直到灵光一现找到那个被忽略的边界条件,那么你已经在实践一种最朴素的“反思”过程。noahshinn/reflexion这个项目,…...
AI驱动PDF智能生成:从LLM原理到工程实践
1. 项目概述:AI驱动的PDF文档智能构建引擎最近在开源社区里,我注意到一个名为NextFrontierBuilds/ai-pdf-builder的项目,它引起了我的浓厚兴趣。这个项目直指一个非常具体且高频的痛点:如何将非结构化的文本、数据,甚至…...
【限时解密】Midjourney企业级印相私有化部署方案:Rust服务集群+硬件加速印相网关+审计级水印注入(文档已归档至NIST合规目录)
更多请点击: https://intelliparadigm.com 第一章:Midjourney企业级印相私有化部署全景概览 企业级印相(Print-on-Demand Imaging)在AI生成内容场景中正从公有云服务向高合规、低延迟、强可控的私有化架构演进。Midjourney虽未官…...
短视频去重怎么做才有效?2026年AI工具对比与实操指南
在短视频平台算法日益严格的背景下,简单搬运或轻微修改的视频越来越难获得流量推荐。尤其对于电商带货、知识博主和矩阵号运营者而言,“如何有效去重”已成为内容能否过审、账号能否存活的关键问题。许多创作者尝试手动调色、加滤镜、裁剪画面࿰…...
基于MCP协议的arXiv论文智能查询服务器部署与应用指南
1. 项目概述:一个连接学术与智能的桥梁如果你和我一样,经常需要追踪某个领域的最新论文,或者面对一个复杂的技术问题,想快速从海量学术文献中找到最相关的几篇,那你一定体会过在arXiv上手动搜索、筛选、下载、再阅读摘…...
用STC89C52单片机+DHT11做个简易温湿度计(附完整代码和串口打印)
基于STC89C52与DHT11的智能温湿度监测系统开发实战 在创客教育和嵌入式开发入门领域,温湿度监测系统一直是最受欢迎的实践项目之一。这个看似简单的项目实际上融合了传感器技术、单片机编程和通信协议三大核心技能,是检验初学者嵌入式开发能力的绝佳试金…...
