- 博客(40)
- 收藏
- 关注
原创 最近我比较闲,开始在线上教C++,以下是我整理的一些讲课内容,供大家参考
那这个框架如何来使用呢?C++老师非常少,但是呢,想学的人又不在少数,所以呢,为了让想学的同学有个机会,我打算在网上免费开放一些资源给大家。语句是程序执行的最小单位,一个语句完成一个特定的操作。那怎么敲出来这个符号呢,首先,大家要保证输入法是英文状态,因为在中文输入法下按这个键出来的可能就不是我们想要的符号啦。首先备注一下这个所有的文档都是基于我讲课的录音简单的修改,或者是提前打了草稿,不涉及任何机构的版权问题。在敲程序之前呢,我先来给大家看一段代码,就是我们的基础框架,它是每次编程都常用的基础框架哈。
2025-03-05 22:16:49
678
原创 学习C++常用词汇词组及缩写汇总
IDE---------Integrated Development Environment—集成开发环境。UTF---------Unicode Transformation Format—Unicode转换格式。LSP---------Liskov Substitution Principle—里氏替换原则。ILP---------Instruction-Level Parallelism—指令级并行。XML---------Extensible Markup Language—可扩展标记语言。
2025-03-02 13:56:48
633
原创 模拟modbus从机给主机返回指令 的MODBUS slave软件竟然是收费的,我能不能自己写一个这样的软件呢
ttk.Label(self.master, text="寄存器地址:").grid(row=2, column=0)ttk.Label(self.master, text="寄存器值:").grid(row=3, column=0)ttk.Label(self.master, text="波特率:").grid(row=1, column=0)ttk.Label(self.master, text="串口:").grid(row=0, column=0)self.log("服务器已启动")
2025-03-01 11:36:59
967
原创 详解for i,label in enumerate(params):
是 Python 中用于遍历可迭代对象(如列表、元组、字符串等)的一种常用循环结构。这里的params是一个可迭代对象,通常是一个列表,函数会为params中的每个元素分配一个对应的索引,然后通过for循环依次取出索引和元素的值,分别赋值给变量i和label。
2025-02-27 17:04:07
398
原创 bin()的超详细最全指南
在 Python 中,bin()是一个内置函数,主要用于将整数转换为以0b开头的二进制字符串表示形式。下面将从基本用法、参数说明、使用示例、注意事项等方面详细介绍bin()函数。
2025-02-26 17:16:05
622
原创 自己闲来无事写的通用modbus协议解析函数,非常好用,包含自动crc校验,最后会解析成一个列表
self.receive_text.insert(tk.INSERT, f"接收的数据: {separated_hex_data}\n")self.receive_text.insert(tk.INSERT, "接收回复报文: 无数据接收\n")print(f"717行received_data的值:{received_data}")messagebox.showwarning("警告", "接收到的数据长度不足")messagebox.showwarning("警告", "非功能码03响应!
2025-02-25 09:45:42
441
原创 在python的函数中,一旦执行到 return 语句,函数的执行就会立即终止
在python的函数中一旦执行到return语句,函数的执行就会立即终止,并且控制权会返回给调用该函数的地方。这意味着return语句之后的任何代码都不会被执行,无论这些代码是什么,比如这样的语句。以下是一个简单的示例代码,帮助你更直观地理解:python。
2025-02-23 16:26:20
157
原创 extend() 方法的处理和to_bytes(2, ‘big‘) 方法的作用
先看代码代码中是将十六进制数0x1234拆分成0x12和0x34,并将它们分别转换为十进制的18和52存储在列表中,他为什么不输出一个0x12和0x34?下面详细解释这个转换过程及遵循的逻辑。
2025-02-23 14:00:51
155
原创 to_bytes() 方法 #python开发
是一个整数类型的变量,它代表着寄存器地址。现在再来看这一行message.extend(register_addr.to_bytes(2, 'big'))是 Python 中整数对象的一个方法,用于将整数转换为指定长度和字节序的字节对象。
2025-02-23 13:50:15
302
原创 [hex(r) for r in registers]这个格式对吗?为什么会有这样的格式?
列表推导式是一种简洁的创建列表的方式,允许你在一行代码中创建列表,避免使用传统的。列表推导式(List Comprehension)是 Python 中一种非常强大且简洁的创建列表的方式,它允许你在一行代码内快速生成列表,避免了使用传统。循环需要多行代码来实现将列表中的每个元素平方并添加到新列表的功能,而使用列表推导式只需要一行代码就可以完成相同的操作,代码更加简洁。是一种正确且实用的列表推导式写法,它利用简洁的语法实现了创建列表的功能。可以看到,列表推导式让代码更加简洁易读,同时也提高了代码的执行效率。
2025-02-23 11:00:20
887
原创 relief=tk.RAISED详细介绍 relief是指定控件的边框样式
在 Tkinter 里,relief参数用于指定控件的边框样式,它可以让控件看起来有不同的立体感或视觉效果,仿佛是凸起、凹陷、扁平、脊状等不同的形态。tk.RAISED是relief参数的一个取值,它会让控件呈现出凸起的外观,给人一种从背景中 “升起” 的视觉感受。
2025-02-22 10:26:07
678
原创 列表推导式详细介绍 hex_data_list = [f“{b:02X}“ for b in response]
我以前看到列表推导式就烦,今天把他解决掉这一行代码拆解已知response的值是24 0A 03 A0 0A DB(正常是连起来的,中间无空格)这个是打印hex_data_list的结果['24', '0A', '03', 'A0', '0A', 'DB']responsef"{b:02X}"b:02X02XAF。
2025-02-21 14:21:17
1378
原创 为什么全球排名靠前的科技公司都要求开发者精通C++
**基础设施构建**:大型公司的核心系统(如 Google 的搜索引擎、Microsoft 的 Windows 内核、AWS 的虚拟化技术)依赖 C++ 实现底层逻辑。- **实时性保障**:自动驾驶系统(如 Tesla 的 Autopilot)、航空航天软件等需要严格实时响应的场景,C++ 的确定性内存管理和低延迟特性是关键。- **复杂问题处理经验**:C++ 的灵活性(如运算符重载、多继承)和潜在陷阱(悬垂指针、未定义行为)要求开发者具备严谨的设计思维。
2025-02-18 08:47:48
400
原创 在python中使用int(calibrate_moisture_hex, 16),特别是那个16的参数。这个参数到底有什么作用
函数可以有一个可选的第二个参数,表示转换的基数,或者说进制数。默认情况下,这个基数是10,也就是十进制。但是,如果我们要处理十六进制、八进制或者其他进制的数,就需要显式地指定这个参数。但是,有时候在处理十六进制数或者其他进制的数时,需要指定进制。函数是一个非常常用的函数,主要用于将其他数据类型转换为整数。,那么它会尝试将其作为十进制来转换,可能会出错或者得到错误的结果。,这会导致错误,因为十进制中不包含这些字符。,这是一个十六进制的数字,代表10。,要把它转换成十进制的整数值。比如,当我有一个字符串。
2025-02-17 17:11:03
451
原创 pycharm社区版有个window和arm64版本,到底下载哪一个?还有pycharm官网
首先pycharm官网是这一个。我是在2025年2月16日9:57进入的网站。如果网站还没有更新的话,那么就往下滑一下找到 community Edition,这个就是社区版了免费的。PyCharm:适用于数据科学和 Web 开发的 Python IDE适用于数据科学和 Web 开发的 Python IDE,具有智能代码补全、实时错误检查、快速修复等。普通电脑一般都是英特尔或者是amd的,那就是普通处理器。只要不是高通处理器的话,一般就选择第一个就可以了,具体你可以看一看下面的这些东西。
2025-02-16 10:02:55
2858
1
原创 C++编程,#include <iostream>详解,以及using namespace std;作用
include <iostream>的作用是包含输入输出流的相关定义,使得C++程序能够使用标准的输入输出对象和函数。它为程序提供了与标准输入输出流进行交互的接口,是编写输入输出操作时必不可少的头文件。最后,还有一些相关的头文件,比如<iomanip>用于格式化输出,<fstream>用于文件输入输出,这些都是在iostream基础上扩展的功能,但在基本的输入输出中,iostream是核心头文件。命名空间中的所有内容(如函数、类、对象等)引入到当前的作用域。是用来包含输入/输出流头文件的预处理指令。
2025-02-15 20:45:28
1037
原创 如何理解sprintf C语言
与 `printf` 不同,`sprintf` 不是将格式化字符串输出到标准输出,而是将其存储在一个字符数组中。`sprintf` 返回成功写入的字符总数,不包括终止的空字符 `\0`。3. **字符串终止**:`sprintf` 会在字符串末尾添加 `\0`,确保缓冲区有足够空间容纳终止字符。- **`...`**:需要格式化的参数列表,数量和类型由 `format` 决定。- **`format`**:格式说明字符串,定义了如何格式化后面的参数。- **`str`**:存储结果的字符数组的指针。
2025-02-09 10:52:30
387
原创 C语言中 sprintf的用法
sprintf是一个非常强大的工具,适用于各种字符串格式化需求。通过合理使用格式说明符和修饰符,可以灵活地控制输出格式。平常完全够用,如果想避免安全风险,建议使用snprintf代替sprintf。
2025-02-09 09:24:19
562
原创 使用开关电源驱动直流led灯是不是会产生频闪,而用电池驱动就一点频闪也没有?
频闪问题 使用开关电源驱动直流led灯是不是会产生频闪,而用电池驱动就一点频闪也没有?
2025-02-08 11:20:51
1037
原创 deepseek用来编程太牛了,C语言 请看如下示例
我今天我忘记了三目运算符的结构,正好同时聊天的时候我也注册了一个deepseek会员,我就试了一下,他怎么思考的都列出来,逻辑很牛啊。
2025-02-06 15:06:38
993
原创 tk库 pack所有参数详解
`pack` 是一个简单的布局管理器,适合快速布局,但对于复杂的布局,建议使用 `grid` 或 `place`。- **作用**:指定组件内部的水平(`ipadx`)和垂直(`ipady`)填充。- `tk.NW`、`tk.NE`、`tk.SW`、`tk.SE` 等组合。- **作用**:指定组件外部的水平(`padx`)和垂直(`pady`)边距。#### 6. **`ipadx` 和 `ipady`**#### 5. **`padx` 和 `pady`**
2025-01-29 20:37:29
477
原创 python 中serial.read用法详解之serial.read(inwaiting or 1)
若 inwaiting 的值为非零(即缓冲区有数据),则取 inwaiting 的值作为 read 方法的参数,读取缓冲区所有数据;若 inwaiting 为零(缓冲区无数据),则取 1 作为参数,读取一个字节。read() serial 类的方法,用于从串口缓冲区读取指定数量的字节数据。格式为 read(size) , size 为读取的字节数。inwaiting 是 serial 类的属性,返回串口输入缓冲区中等待读取的字节数。如 ser.inwaiting() 可获取当前缓冲区字节数。
2025-01-29 08:41:41
389
原创 快速查询,简化版,ASCII码与16进制转换对照表
ASCII码(美国信息交换标准代码)是一种字符编码标准,用于将字符(如字母、数字和符号)表示为数字。ASCII码使用7位二进制数来表示128个不同的字符,每个字符对应一个唯一的7位二进制数。在实际应用中,通常使用8位二进制数(即一个字节)来存储ASCII码,其中最高位通常为0。
2025-01-28 21:55:18
1314
原创 keil5报错user\deal.h(49): error C141: syntax error near ‘t‘, expected ‘)‘
检查了一天,最后发现的问题是头文件里声明有错误。写这个东西就是只想提醒大家一个东西,检查的时候不要只检查函数和调用函数的地方,你可能检查一天也不一定能检查出来,实际上是因为你在头文件函数声明的地方出了问题。在deal.h头文件里声明的时候声明成了float类型,但是实际上我这个地方的代码写的是u16类型(unsigned short)看这个图原来的时候这里写的是float,后来我改成了u16。(这里我嫌麻烦,直接写成了unsigned short)问题就出在下图箭头指的这个地方我把它写成了float。
2025-01-25 18:19:32
463
原创 关于 static 关键字的作用,以及 static 变量的作用域和生命周期。
变量在程序的整个运行期间保持其值。即使 blast_rainfall 函数执行完毕,其值仍然会被保留,直到程序终止。if(device_tick1_time>=20) //2分钟 测试60s。if(device_tick1_time_flag==1) //2分钟 测试60s。只在 blast_rainfall 函数内部有效,外部代码无法直接访问或影响这个变量。变量的作用域是局部的,也就是说它只在其定义的函数中可见。比如下方这段代码中,if(flagg==0) //2分钟 测试60s。会保持上次调用时的值。
2025-01-24 10:32:59
865
原创 keil 报错之unreachable code报错可能发生的原因:在 return 之后的代码都不会被执行
returnreturn在C程序中,(不可达代码)错误通常是指在逻辑上不可到达的代码段。这意味着代码的某个部分在执行时永远也不会被运行。return如果一个return语句之后还有代码,编译器会报出错误,因为return语句会返回到调用该函数的地方,后面的代码将无法执行。breakcontinuegoto类似于return,如果你在这些语句后面写了代码,编译器也会识别到这些代码是不可达的。if如果你的if语句条件逻辑确保了某些代码块永远不会被执行,编译器可能会向你发出的警告。
2025-01-22 11:17:29
469
原创 python pack中padx和pady的用法,padx(10,5)是什么意思
padx`和`pady`是`pack`方法的可选参数,用于控制小部件内部和外部的填充(或空隙)。通过适当地设置`padx`和`pady`的值,可以控制小部件之间的间距,从而使用户界面看起来更加整齐和美观。-`padx`:控制小部件的!-`pady`:控制小部件的上下外边距(垂直填充)。-你可以根据需要调整`padx`和`pady`的值来实现所需的布局效果。-`btn1`在左侧和右侧各有10像素的空隙,上下各有5像素的空隙。
2025-01-19 21:42:57
955
原创 在 Modbus RTU 协议中,功能码通常用 03 或 06 表示。说明书中有时会写成 03H 或 06H,其中的 H 代表什么?另外,0x03 和 0x06 又是什么?这些表示法之间有什么区别?
2.03H和06H:在这里,后面的**H**表示这是以十六进制形式表示的数字。3.0x03和0x06:这也是十六进制表示法的一种,前缀**0x**是编程中常用的表示,表明后面的数字是以十六进制表示的。1.03和06:这是以十进制形式表示的数字,代表功能码的值。-**0x03/0x06**同样是十六进制表示,但使用了常见的前缀**0x**。-**03H/06H**是十六进制表示,H代表"Hexadecimal"。-**03/06**是十进制表示。
2025-01-19 20:38:35
368
原创 python tkinter怎么读
tkinter的发音通常是**"tea-kinter"**,英文读作"tee-kinter"。它由两个部分组成:“tk”和“inter”,其中“tk”源自“Toolkit”,而“inter”暗示它是一个用于构建界面的工具包。
2025-01-19 15:07:40
941
原创 Keil 项目警告黄色叹号修复方案#project栏有!
解决这个问题的方法取决于具体的警告或错误类型。以下是一些常见的解决方法: 查看警告或错误信息:双击黄色感叹号,可以查看详细的警告或错误信息。根据提示,可以更好地理解问题所在。检查代码:仔细检查源文件中的代码,特别是与黄色感叹号相关的行。可能存在语法错误、未定义的变量或函数等问题。我双击之后提示如下,说明路径有问题,查看发现路径有中文,这是新手常见的问题。解决方案为:修改路径为中文,并重新编译后解决。修改路径为中文,并重新编译后解决。在Keil中,黄色感叹号通常表示。
2025-01-16 08:51:39
634
原创 keil5左边的project窗口显示的文件不全怎么解决?KEIL打开新工程工程文件丢失
今天遇到了这样的问题,解决办法是,编译一下即可。全部重新编译就好了,非常nice!
2025-01-15 17:30:20
480
原创 import tkinter as tk的作用以及这行代码中 as的主要作用
这行代码用于导入 Python 的tkinter模块,并为其指定了一个简短的别名tk。tkinter是 Python 的标准 GUI(图形用户界面)库,它允许开发者创建桌面应用程序并为用户提供图形化界面。
2025-01-15 11:36:17
384
原创 Modbus Rtu从机功能码比如是03或06,为什么说明书里经常把它写上一个03H或06H呢?H代表什么
在说明书中提到“03H”通常是为了明确指出使用的是十六进制表示法(H表示十六进制)。使用“03H”是表明与数字03相同,只是采用了十六进制来表达。在实际使用中,03H和03指的是同一个功能。在Modbus协议中,功能码03(0x03)和06(0x06)具有不同的功能和用途。
2024-12-09 19:39:30
710
原创 modbus Rtu协议设备的说明书上经常写到3.5个字符的时间间隔,这个时间怎么算呢?以9600波特率为例进行计算。
在RTU模式中,提到的“3.5个字符的间隔”通常指的是数据传输中的时间延迟。这个时间间隔可以通过每个字符的传输时间来计算。具体的T值取决于所使用的通信速率。根据具体的波特率,您可以计算出相应的间隔时间。请提供具体的波特率以获取更精确的数值。
2024-12-09 19:37:41
380
原创 嵌入式开发中,u16可以改为其他的写法,比如x16都行是吗
`u16` 被定义为 `unsigned short` 类型的别名,允许您使用 `u16` 来表示无符号的16位整数。例如,`u16` 通常表示一个无符号的16位整数,而 `x16` 可能会导致他人对这个类型的用途产生疑问。在 C 语言中,使用 `typedef` 定义类型别名时,您可以将 `u16` 更改为任何您喜欢的名称,比如 `x16`。在这个示例中,`x16` 就是 `unsigned short` 类型的别名,您可以用它来声明无符号的16位整数。// 将值50000赋给该变量。
2024-12-09 10:53:34
917
原创 嵌入式开发常用无符号16位整数是为什么呢?还有 有符号16位整数吗?
**`short`**:在 C 中,`short` 通常代表一个16位的有符号整型(虽然具体大小取决于编译器,但未指定大小的 `short` 通常为16位)。- 无符号16位整数的值范围是0到65535,而有符号16位整数的范围是-32768到32767。当然,有符号16位整数在需要表示负值的情况下也是非常有用的,具体使用哪种类型通常取决于具体的应用场景和需求。- **`int16_t`**:标准库 `<stdint.h>` 中引入的类型,提供确定大小和符号(有符号)的整数。### 有符号16位整数。
2024-12-09 10:50:38
554
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人