串的定义串是由零个或者多个字符组成的有限序列,又叫字符串。
一般记为 s=”a1a2…an”(n≥0),s 是串的名字,引号中的字符序列是串的值而不是内容。ai (1≤i≤n) 可以是字母、数字等,i 是改字符在串中的位置。
串中的字符数目 n 称为串的长度,定义中谈到 “有限” 指的是长度 n 是有一个有限的数值。
零个字符的串称为空串,长度为 0,直接用两个 “””” 表示。
所谓的序列,说明串的相邻字符之间有前驱和后继的关系。
空格串:只是包含空格的串。
字串和主串:串中任意个数的连续字符组成的子序列称为该串的子串,包含字串的串称为主串。
字串在珠串的位置就是字串的第一个字符在主串的序号。
串的比较对于两个不相等的串进行判断大小:
给定义两个串:s=“a1a2…an”,t=“b1b2…bm”,当满足以下条件之一时,s<t。
(1)n<m,且 ai = bi(i=1,2,…,n)
例如:s=“hap”,t=“happy”,s<t
(2)存在某个≤min (m,n),使得 ai=bi (i=1,2,…,k-1), ...
栈的定义栈(stack)是限定仅在表尾进行插入和删除操作的线性表。(指的是栈顶)栈顶:插入和删除的一端栈底:另外一段空栈:不含任何数据元素的栈栈又称:后进先出的线性表,简称 LIFO 结构
注意:栈元素具有线性表关系,即前驱后继关系。特殊之处就是这个线性表的插入和删除位置,只能在栈顶进行。栈底是固定的,最先进栈的只能在栈底。
栈的插入操作叫做进栈,也叫压栈、入栈。
栈的删除操作,叫做出栈,也叫弹栈。
栈的抽象数据类型 push:插入(进栈) pop:删除(出栈)
123456789101112ADT 栈(stack)Data 同线性表。元素具有相同的类型,相邻元素具有前驱和后继关系。operation InitStack (*S): 初始化操作,建立一个空栈 s。 DestroyStack (*S): 若栈存在,则销毁它。 CleanrStack (*S): 将栈清空。 StackEmpyt (S): 若栈为空,返回 true,否则返回 false。 GetTop (S,*e): 若栈存在且非空,用 e 返回 s 的栈元素 Push (*S,e): 若栈 s 存在,插入新元素 e 到 ...
大致 1234567 打开视频文件:使用 cv2.VideoCapture 打开指定路径的视频文件。检查是否成功打开:通过 cap.isOpened () 方法检查是否成功打开了视频文件。读取视频帧:在循环中使用 cap.read () 方法逐帧读取视频。显示视频帧:使用 cv2.imshow () 方法显示每一帧。保存视频帧:定义 save_image 函数来保存当前帧,并以 frame_计数.jpg 的形式命名。释放资源并关闭窗口:定义 release_resources 函数或者 cap.release () cv2.destroyAllWindows () 释放摄像头并关闭所有窗口键盘输入监听:使用 cv2.waitKey () 方法等待一小段时间(这里设置为 1 毫秒),并在用户按下 'q' 键时退出循环。
读取视频 12video_path = 'path_to_your_video.mp4' # 将此处替换为你的 MP4 文件路径 cap = cv2.VideoCapture (video_path)
判断是否打开 123# 检查视频是否成功打开 if not c ...
1、配置 APN
AT+QICSGP=1,1,”cmnbiot”,””,””
2、开启移动网络
AT+NETOPEN
3、设置客户端 ID
AT+MCONFIG=”id”,” 用户名”,” 密码”AT+MCONFIG="667145986bc31504f06f60ee_wulianwang_0_0_20","667145986bc31504f06f60ee_wulianwang","63e106dff798f9ed7d313f33c5e1cffe4ad206abe2121b993d464a8f111a97ba"
4、连接 mqtt 服务器
AT+MIPSTART=” 服务器 IP 地址”,1883,4
AT+MIPSTART="0ae1ed433d.st1.iotda-device.cn-north-4.myhuaweicloud.com",1883,4
5、连接服务器,设置心跳 60 秒
AT+MCONNECT=1,60
6、订阅数据
AT+MSUB="$oc/devices/...
1. 线性表的定义线性表:零个或多个数据元素的有限序列。
它是一个序列。如果有多个元素,则第一个元素无前驱,最后一个元素无后继,其他的每一个元素只有一个前驱和后继。
将线性表记为 a1,a2,a3,则 a1 是 a2 的直接前驱元素,a3 是 a2 的直接后继元素。有且仅仅只有一个直接前驱和一个直接后继。
所以线性表元素的个数 n (n≥0) 定义为线性表的长度,当 n=0,为空表。
在非空表中的每个元素都有一个确定的位置,比如 a1 是第一个,a3 是最后一个。a2 是第二个,称 2 为数据元素 a2 在线性表中的位序。
2. 线性表的抽象数据类型当传递一个参数给函数的时候,这个参数会不会在函数内被改动决定了使用什么参数形式。
如果需要被改动,则需要传递指向这个参数的指针。
如果不用被改动可以直接传递这个参数。
总结:需要改动则传递参数的指针,不需要则传递这个参数。
3. 线性表的顺序存储结构顺序存储结构线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
说白了就是:在内存中,占个地方,通过占位的形式,将一定的内存空间给占,然后把相同数据类型的数据元素一次存放在这里。
使用一维数组来实现顺序存储结构 ...
从四月份到八月份的比赛结束,取得了华东赛区一等奖和全国总决赛二等奖。说起来,也是跟在梦中似的~没有想过真的可以进去国赛,也算是吃到了赛道的福利了。在华东赛区和总决赛的作品演示室看到他们的作品,看的我都自卑了,很高级,我们的作品很简陋,太简陋了,搞得我都想跑了~
我负责的是写 APP 和数据大屏,但是连整合单片机的部分都是我来写的,一个字 “累”!写鸿蒙 APP,也是只学习了三天 ArkTs 就直接开始写了,ArkTs 也是基于 TS 来的,与 JS 相对,TS 确实简单很多,我主要是有基础啦。总结就是,UI 很烦很烦!!!没有艺术细胞的我,画 UI 简直是酷刑!!!
整合单片机的也是一个折磨,两个队友的代码习惯不一样,不能直接调用函数,而且出现的 bug 最多的就是单片机…… 语音,WIFI,LoRa 这部分都是我来的,有时候 LoRa 很奇怪,节点能发数据,但是网关收不到,在华东赛区的时候出现这个问题,吓得我手都在抖哈哈哈。
数据大屏这部分没啥好说的,用的是低代码,会搞 Http 请求就没有任何问题了,挺简单的。
在总决赛的之前,临时买了一个 ESP32Cam,缺点就是卡 (供电需要 5V2A 的,他的烧录板没有!!!),清晰度倒 ...
野火 STM32
未读一、EXTI 介绍外部中断 / 事件控制器(EXTI)管理控制器的 23 个中断 / 时间线,都有一个对应的一个边沿检测器,实现输入信号的上升沿和下降沿检测,都可以实现对每个中断 / 事件进行单独配置,可以单独配置中断或事件和触发事件的属性。
(EXTI 是在 APB2 总线上的)
1、红色虚线和绿色虚线分别是 产生中断的线路,信号流入到 NVIC 控制器。
2、绿色虚线是产生事件的线路,输出一个脉冲信号。
3、输入线,EXTI 有 23 个中断 / 事件输入先,可以为任意一个 GPIO,也可以是外设的事件。
4、边沿检测电路,根据上升沿触发寄存器(EXTI_RTSR)和下降沿触发选择寄存器(EXTI_FTSR)对应位控制信号触发。
5、软件中事件寄存器(EXTI_SWIER),允许程序控制可以启动中断 / 时间线。
6、中断屏蔽寄存器(EXTI_IMR),可以简单控制 EXTI_IMR 来实现产生中断的目的。
7、挂起寄存器(EXTI_PR),内容输出到 NVIC,实现系统中断事件中断控制。
8、事件屏蔽寄存器(EXTI_EMR),控制它来实现是否产生事件的目的。
二、编程要点 1、 ...
野火 STM32
未读一、中断概述中断时出现某些意外需要主机干预,机器能自动停止运行的程序,转入新的处理的程序,处理完之后返回程序被暂停的程序,继续运行。
异常就是中断,中断就是异常。
异常分为:系统异常和外部中断。
二、NVIC 介绍 NVIC 是嵌套向量中断控制器,控制芯片中断的功能。
一般来说,使用 ISER(使能中断)、ICER(失能中断)和 IP(设置中断优先级)寄存器。
(不常用)
三、优先级中断优先级寄存器 NVIC_IPRx,用来配置外部中断的优先级。如果抢占优先级相同,九比较子优先级,如果都相同,比较硬件中断编号,编号越小,优先级越高
四、优先级分组优先级分组由外设 SCB 的应用程序中断和复位控制寄存器 AIRCR 的 PRIGROUP [10:8] 决定,主优先级 = 抢占优先级
12345678910111213141516171819202122/*** 配置中断优先级分组:抢占优先级和子优先级 * 形参如下:* @arg NVIC_PriorityGroup_0: 0bit for 抢占优先级 * 4 bits for 子优先级 * @arg NVIC_PriorityGroup_1: 1 bit f ...
在 wsl 的 ubuntu 安装 idf 遇到没有串口的报错,是因为 wsl 不自带 usb 的驱动,需要手动安装
教程使用他人的:https://blog.csdn.net/qq_40695642/article/details/127270039
ESP32 连接华为云我使用的是 arduinoied 所写的代码,要注意,在 mqtt 请求华为云中,需要写心跳间隔,不然上云不了(client.setKeepAlive (60); // 心跳间隔,很重要!!!)。代码如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147#include <ArduinoJson.h>#include <WiFi. ...