自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 Modbus ASCII 协议介绍

异步串行传输方式,使用ASCII 码形式传输数据,每个8位字节作为2个 ASCII 字符发送,通过串口通信。

2025-09-05 18:13:36 998

原创 Modbus RTU 协议介绍

Modbus RTU 协议介绍Modbus RTU 协议介绍异步串行传输方式,采用二进制格式,适用于串行通讯(如RS-485),效率高,是工业现场的主流选择。主站是Master,从站是Slave。Modbus RTU 协议格式帧结构地址码(1字节):从设备的地址,取值1-247。功能码(1字节):指定操作类型,如读取或写入。数据区(长度可变):包含具体的操作数据。CRC校验(2字节):循环冗余校验码,确保数据无误。功能码。

2025-09-05 17:51:53 1289

原创 Modbus协议介绍

Modbus是一种开放的串行通信协议,支持RS-232、RS-485和TCP/IP网络等多种传输方式,具有简单、紧凑、易用的特点。它采用主从式通信模式,支持多种功能码和存储区类型(线圈、输入线圈、保持型寄存器、输入寄存器)。Modbus协议分为RTU(二进制)和ASCII(文本)两种串行模式,以及基于TCP/IP的Modbus TCP。协议采用大端字节序存储,并提供了多种通信库(如NModbus4、HslCommunication)简化开发。Modbus广泛应用于工业控制领域,支持多种电气接口和传输介质。

2025-09-05 17:50:56 956

原创 串口通信基础知识

本文介绍了串口通信的基础知识,重点讲解了.NET中的SerialPort类及其使用方法。主要内容包括:串口通信的基本参数配置(波特率、数据位、校验位等)、串口对象的创建方式、核心属性与方法(如打开/关闭串口、数据读写操作)、数据接收事件DataReceived的实现,以及使用中的注意事项(线程安全、资源释放和缓冲区管理)。文中提供了多个C#代码示例,涵盖串口初始化、数据收发等常见操作场景,为开发者快速掌握串口通信编程提供了实用参考。

2025-09-05 17:50:09 427

原创 上位机通信基础知识

上位机与下位机通信通过特定的协议和硬件接口,实现双向数据交换。

2025-09-05 17:47:51 304

原创 Modbus Tcp 协议介绍

Modbus TCP协议是基于TCP/IP网络的Modbus协议变种,支持多从站同时访问主站并通过事务标识符区分并发请求。其报文结构包含7字节MBAP头(含事务标识、协议标识等)和功能码+数据域。主要功能码包括03(读保持寄存器)、06(写单个寄存器)和10(写多个寄存器)。文中详细解析了各功能码的请求/响应报文格式,并通过具体案例展示了十六进制报文的结构和字节含义。该协议支持1-247从站地址,采用大端字节序传输数据,适用于工业自动化领域的设备通信。

2025-08-26 18:44:20 1386

原创 餐馆(求最大的总预计消费金额)

某餐馆有n张桌子,每张桌子有一个参数:a 可容纳的最大人数; 有m批客人,每批客人有两个参数:b人数,c预计消费金额。 在不允许拼桌的情况下,请实现一个算法选择其中一部分客人,使得总预计消费金额最大。

2025-03-18 22:23:41 522 1

原创 小乐乐改数字

小乐改数字编程题的解析。

2025-03-18 18:39:32 376

原创 设计模式原则——接口隔离原则

设计模式原则——接口隔离原则。

2024-06-27 00:22:08 640

原创 算法学习笔记——单双链表及其反转—堆栈诠释

什么是单链表,单链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null单链表不要求逻辑上相邻的两个元素在物理位置上也相邻,因此不需要连续的存储空间单链表的入口节点称为链表的头结点也就是head// 结点的值// 下一个节点// 节点的构造函数(有两个参数)

2024-06-26 00:26:49 992

原创 设计模式原则——迪米特法则原则

设计模式原则——迪米特法则原则。

2024-06-24 16:08:51 857

原创 设计模式原则——里氏替换原则

与开闭原则不同的是开闭原则可以改变父类原有的功能,里氏替换原则不能修改父类的原有的性质,即使子类扩展了父类的功能,也不能改变父类的原有功能。信用卡继承并重写储蓄卡的功能,破坏了里氏替换原则,根据里氏替换原则进行修改。继承必须确保父类所拥有的性质在子类中依然成立。提高兼容性、维护性和扩展性。

2024-06-23 23:44:33 843

原创 设计模式原则——开闭原则

设计模式原则——开闭原则。

2024-06-23 23:37:18 332

原创 设计模式原则——单一职责原则(SPS)

设计模式原则——单一职责原则(SPS)

2024-06-22 17:20:50 1087

原创 设计模式——设计模式介绍

设计模式设计模式介绍设计模式:系统服务设计中针对场景的一种解决方案,可以解决功能逻辑开发中的共性问题,并非所有问题一种开发思想,每个设计模式都有解决某一类问题的概念模型,不要拘束于一种的固定的代码格式,要根据具体场景做出变化同一种设计模式,不同场景,不同代码实现方式,以及不同开发人员去实现,都会有不同的代码方案高内聚、低耦合和可复用的特点在组件中使用比较频繁,比如:RPC框架,引擎的决策树等主要通过实际案例来理解学习,不要只通过硬背概念,这样实际应用中存在问题设计模式的类型:创建型模

2024-06-22 17:16:59 1001

原创 算法学习笔记——算法和数据结构简介

精确求解大厂算法和数据结构笔试、面试题、acm比赛或者和acm形式类似的比赛,考虑的都是硬计算类算法但是某些问题使用硬计算类的算法,可能会让计算的复杂度较高。

2024-06-06 22:18:59 330

原创 算法学习笔记——时间复杂度和空间复杂度

因为一次扩容后可能很久不会再扩容了,每次都计算整体的复杂度太麻烦就把每次扩容能分摊到的时间复杂度进行计算,看整个过程调用了多少次来估计整体的时间复杂度。涉及动态数组,先申请一个固定大小的数组,当数组不够用时,再申请一个相应倍数的数组,把旧数组中的值拷贝到旧数组中,一共加入了N个数总代价,单次调用是。链表的get(i)方法不是常数操作,因为链表不是连续的存储空间,靠着指针链接着,要靠头节点一个个的往下查,是一定要查找这么多个数的。比如只有一个while的循环的冒泡排序,其实时间复杂度是。

2024-06-04 23:47:45 963 1

原创 算法学习笔记——二分搜索

0位置不是峰值,N-1位置不是峰值,则呈现左边上扬右边下降的趋势,这中间会出现一个或者多个峰值。数组条件:数组中相邻的两个数不相等, 只返回一个峰值就行。为峰值,如果右边或者左边没数值可以认为是无穷小。

2024-06-02 11:56:35 845

原创 算法学习笔记——对数器

对数器的门槛其实是比较高的,因为往往需要在两种不同思路下实现功能相同的两个方法,暴力一个、想象中的最优解是另一个。以后的很多题目都用到对数器,几乎可以验证任何方法,尤其在验证贪心、观察规律方面很有用。关键是第5步,找到一个数据量小的错误样本,便于你去带入debug。然后把错误例子带入代码一步一步排查。Print大法、断点技术都可以。

2024-06-02 11:56:01 426

原创 算法学习笔记——选择、冒泡、插入排序

算法学习笔记——选择、冒泡、插入排序。

2024-06-02 11:55:03 429

原创 算法学习笔记——二进制

例如:-2 :0010 -> 0010 - 1 -> 0001 -> 取反 -> 1110。因为1是一个int类型,只有32位,所以(1

2024-06-02 11:54:13 662

原创 小区物业管理系统

Java Swing 框架:Swing采用MVC(model-view-controller,模型-视图-控制器)设计模式,模型用于维护组件的状态,视图是组件的可视化表现,控制器用于控制各个事件,组件做出怎么样的响应。通过java写出登录界面、注册界面、忘记密码界面、用户端界面和管理端界面,再用java的JDBC 进行数据库的连接,应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作,完成登录、注册、忘记密码等功能需求。根据账号类型进行相对应的账号注册。

2024-05-21 21:55:07 1011

原创 深入解析String和String#intern

深入解析String和String#intern

2024-05-07 23:32:35 1064

原创 ZGC原理整理

ZGC原理整理

2024-04-28 23:16:45 1749 1

原创 Java注解

java 注解

2024-04-10 20:32:24 934

原创 Java反射学习笔记

Java反射的学习笔记

2024-04-10 20:16:55 792

原创 快速找质数

质数改进算法。

2022-10-08 15:14:10 303

原创 Java接口和多态练习

​ 在测试类中定义一个 用手机的方法,要求该方法既能接收老手机对象,也能接收新手机对象。​ 在该方法内部调用打电话,发短信以及新手机特有的玩游戏方法。定义新手机继承手机类实现IPlay接口。行为:继承父类的行为,重写玩游戏方法。​ 行为:打电话,发短信。​ 行为:继承父类的行为。

2022-09-18 08:44:34 1393

原创 Java继承练习

分别调用求面积和求周长的方法。功能:求面积,求周长。功能:求面积,求周长。功能:求面积,求周长。

2022-09-18 08:43:35 1701

原创 java 打乱字符串内容

示例代码用的是**toCharArray()**的方法来完成。

2022-08-16 20:22:55 3725 3

原创 金额转换-

金额转换-

2022-08-14 14:04:34 697

原创 java获取随机数

第一步:导包:import java.util.Random;第二步:创建对象:Random r = new.Random(); r是变量名可以改变第三步:进行变量赋值:例如:int i = r.nextInt(number);//随机的范围为0~number-1,r.nextInt()括号内填入的数字觉得结束的范围。//秘诀用来生成任意数到任意数之间的随机数 例如 7~51.让这个范围头尾都减去一个值,让这个范围从0开始 -7 使范围变成0~82.尾巴+1 8 + 1 = 93. 最终的

2022-08-05 16:30:37 600

原创 求平方根(舍去小数)

代码】求平方根(舍去小数)

2022-08-05 15:35:59 126

原创 Java 逢七过

代码】Java 逢七过。

2022-08-05 15:21:40 1002

原创 s_gets()函数解析

s_gets()函数解析

2022-06-22 16:31:27 691

原创 定义一个结构体变量,包含年、月、日。根据控制台给出的日期,计算该日在本年中是第几天,注意闰年问题。

#include<stdio.h>#include<time.h>int main(void){ int n, sum = 0; struct { int year; int month; int day; }date; printf("请输入年份:"); scanf_s("%d", &date.year); printf("请输入月份:"); scanf_s("%d", &date.month); printf("请输入日期:");

2022-05-30 16:41:30 1114

原创 数据处理器(编写一个程序,提示用户输入3组数,每组数包含5个double类型的数 (假设用户都正确地响应,不会输入非数值数据))

题目:编写一个程序,提示用户输入3组数,每组数包含5个double类型的数(假设用户都正确地响应,不会输入非数值数据)。该程序应完成下列任务。a.把用户输入的数据储存在3×5的数组中b.计算每组(5个)数据的平均值c.计算所有数据的平均值d.找出这15个数据中的最大值e.打印结果每个任务都要用单独的函数来完成(使用传统C处理数组的方式)。完成任务b,要编写一个计算并返回一维数组平均值的函数,利用循环调用该函数3次。对于处理其他任务的函数,应该把整个数组作为参数,完成任务c和d的函数应把

2022-05-29 17:27:58 1074

原创 输入3个字符串,按从小到大的顺序输出。使用指针实现,可使用strcpy和strcmp库函数。

输入3个字符串,按从小到大的顺序输出。使用指针实现,可使用strcpy和strcmp库函数。#include<stdio.h>#include<string.h>int main(void){ char a[] = { "Holle" }; char b[] = { "World" }; char c[] = { "Thank" }; char* Temp; //中间变量 char* ad[] = { a,b,c }; //利用指针数组存储地址 for(int i

2022-05-23 19:46:40 2658

原创 自定义一个类似strcmp()函数,比较两个字符串的大小。

自定义一个类似strcmp()函数,比较两个字符串的大小。#include<stdio.h>#include<string.h>int Strcmp(const char* str1, const char* str2);int main(void){ char str1[10]; char str2[10]; strcpy_s(str1, 10, "AbcD"); strcpy_s(str2, 10, "AbCd"); int data = Strcmp(str

2022-05-23 16:46:26 997

原创 使用指针实现冒泡排序的数组元素升序排列

使用指针实现冒泡排序的数组元素升序排列。#include<stdio.h>void bubarray(int a[], int n);int main(void){ int a[] = { 0,-1,-2,4,3,1,20,15 }; int n = (int)sizeof(a) / sizeof(a[0]); printf("Initial results:\n"); for (int i = 0; i < n; i++) printf("%d ", a[i]);

2022-05-23 16:30:41 926

PDF的转换工具分享。

有重多功能,文件小,但能处理许多东西

2022-04-26

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除