5 基于 Keil MDK 移植RT-Thread Nano 上移植FinSH

原文地址

本文分为两部分:第一部分是实现 UART 控制台,该部分只需要实现两个函数即可完成 UART 控制台打印功能。第二部分是实现移植 FinSH 组件,实现在控制台输入命令调试系统,该部分实现基于第一部分,只需要添加 FinSH 组件源码并再对接一个系统函数即可实现。下面将对这两部分进行说明。

5.1在 Nano 上添加 UART 控制台

在 RT-Thread Nano 上添加 UART 控制台打印功能后,就可以在代码中使用 RT-Thread 提供的打印函数 rt_kprintf() 进行信息打印,从而获取自定义的打印信息,方便定位代码 bug 或者获取系统当前运行状态等。实现控制台打印,需要完成基本的硬件初始化,以及对接一个系统输出字符的函数。

5.1.1串口初始化

使用串口对接控制台的打印,首先需要初始化串口,如引脚、波特率等。需要在 board.c 中的 rt_hw_board_init() 函数中调用串口初始化,当然在main()函数也可以。
在这里插入图片描述

5.1.2实现 rt_hw_console_output

实现 finsh 组件输出一个字符,即在该函数中实现 uart 输出字符:

/*输出一个字符,系统函数,函数名不可更改 */
void rt_hw_console_output(const char *str);

示例代码:如下是基于STM32F103 标准库3.5的串口驱动对接的 rt_hw_console_output() 函数,实现控制台字符输出,示例仅做参考。
在这里插入图片描述

注意:RT-Thread 系统中已有的打印均以 \n 结尾,而并非 \r\n,所以在字符输出时,需要在输出 \n 之前输出 \r,完成回车与换行,否则系统打印出来的信息将只有换行。

5.1.3结果验证

在应用代码中编写含有 rt_kprintf() 打印的代码,编译下载,打开串口助手进行验证。如下图是一个在 main() 函数中每隔 1 秒进行循环打印 Hello RT-Thread 的示例效果:
在这里插入图片描述

5.2在 Nano 上添加 FinSH 组件

RT-Thread FinSH 是 RT-Thread 的命令行组件(shell),提供一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息。它可以使用串口 / 以太网 / USB 等与 PC 机进行通信,使用 FinSH 组件基本命令的效果图如下所示:
在这里插入图片描述

本文以串口 UART 作为 FinSH 的输入输出端口与 PC 进行通信,描述如何在 Nano 上实现 FinSH shell 功能。

在 RT-Thread Nano 上添加 FinSH 组件,实现 FinSH 功能的步骤主要如下:

1.添加 FinSH 源码到工程。
2.实现函数对接。

5.2.1 KEIL 添加 FinSH 源码工程

点击 Manage Run-Environment:
在这里插入图片描述

勾选 shell,这将自动把 FinSH 组件的源码到工程:
在这里插入图片描述

添加成功后会有三个文件:
在这里插入图片描述

5.2.2实现 rt_hw_console_getchar

要实现 FinSH 组件功能:既可以打印也能输入命令进行调试,控制台已经实现了打印功能,现在还需要在 board.c 中对接控制台输入函数,实现字符输入:

/* finsh 获取一个字符,系统函数,函数名不可更改 */
char rt_hw_console_getchar(void)

rt_hw_console_getchar():控制台获取一个字符,即在该函数中实现 uart 获取字符,可以使用查询方式获取(注意不要死等,在未获取到字符时,需要让出 CPU),也可以使用中断方式获取。

5.2.2.1查询方式

如下是基于 STM32F103 标准库3.5的串口驱动对接的 rt_hw_console_getchar(),完成对接 FinSH 组件,其中获取字符采用查询方式,示例仅做参考。

/* 移植 FinSH,实现命令行交互, 需要添加 FinSH 源码,然后再对接 rt_hw_console_getchar */
char rt_hw_console_getchar(void)
{int ch = -1;if (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) != RESET){ch = (int)USART_ReceiveData(USART1);}else{if(USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET){USART_ClearFlag(USART1,USART_FLAG_TC);}rt_thread_mdelay(10);}return ch;  
}

5.2.2.2中断方式

如下是基于 STM32F103串口驱动,实现控制台输出与 FinSH Shell,其中获取字符采用中断方式。原理是,在 uart 接收到数据时产生中断,在中断中把数据存入 ringbuffer 缓冲区,然后释放信号量,tshell 线程接收信号量,然后读取存在 ringbuffer 中的数据。

/* 第一部分:ringbuffer 实现部分 */
#include <rtthread.h>
#include <string.h>#define rt_ringbuffer_space_len(rb) ((rb)->buffer_size - rt_ringbuffer_data_len(rb))struct rt_ringbuffer
{rt_uint8_t *buffer_ptr;rt_uint16_t read_mirror : 1;rt_uint16_t read_index : 15;rt_uint16_t write_mirror : 1;rt_uint16_t write_index : 15;rt_int16_t buffer_size;
};enum rt_ringbuffer_state
{RT_RINGBUFFER_EMPTY,RT_RINGBUFFER_FULL,/* half full is neither full nor empty */RT_RINGBUFFER_HALFFULL,
};rt_inline enum rt_ringbuffer_state rt_ringbuffer_status(struct rt_ringbuffer *rb)
{if (rb->read_index == rb->write_index){if (rb->read_mirror == rb->write_mirror)return RT_RINGBUFFER_EMPTY;elsereturn RT_RINGBUFFER_FULL;}return RT_RINGBUFFER_HALFFULL;
}/** * get the size of data in rb */
rt_size_t rt_ringbuffer_data_len(struct rt_ringbuffer *rb)
{switch (rt_ringbuffer_status(rb)){case RT_RINGBUFFER_EMPTY:return 0;case RT_RINGBUFFER_FULL:return rb->buffer_size;case RT_RINGBUFFER_HALFFULL:default:if (rb->write_index > rb->read_index)return rb->write_index - rb->read_index;elsereturn rb->buffer_size - (rb->read_index - rb->write_index);};
}void rt_ringbuffer_init(struct rt_ringbuffer *rb,rt_uint8_t           *pool,rt_int16_t            size)
{RT_ASSERT(rb != RT_NULL);RT_ASSERT(size > 0);/* initialize read and write index */rb->read_mirror = rb->read_index = 0;rb->write_mirror = rb->write_index = 0;/* set buffer pool and size */rb->buffer_ptr = pool;rb->buffer_size = RT_ALIGN_DOWN(size, RT_ALIGN_SIZE);
}/*** put a character into ring buffer*/
rt_size_t rt_ringbuffer_putchar(struct rt_ringbuffer *rb, const rt_uint8_t ch)
{RT_ASSERT(rb != RT_NULL);/* whether has enough space */if (!rt_ringbuffer_space_len(rb))return 0;rb->buffer_ptr[rb->write_index] = ch;/* flip mirror */if (rb->write_index == rb->buffer_size-1){rb->write_mirror = ~rb->write_mirror;rb->write_index = 0;}else{rb->write_index++;}return 1;
}
/*** get a character from a ringbuffer*/
rt_size_t rt_ringbuffer_getchar(struct rt_ringbuffer *rb, rt_uint8_t *ch)
{RT_ASSERT(rb != RT_NULL);/* ringbuffer is empty */if (!rt_ringbuffer_data_len(rb))return 0;/* put character */*ch = rb->buffer_ptr[rb->read_index];if (rb->read_index == rb->buffer_size-1){rb->read_mirror = ~rb->read_mirror;rb->read_index = 0;}else{rb->read_index++;}return 1;
}/* 第二部分:finsh 移植对接部分 */
#define UART_RX_BUF_LEN 16
rt_uint8_t uart_rx_buf[UART_RX_BUF_LEN] = {0};
struct rt_ringbuffer  uart_rxcb;         /* 定义一个 ringbuffer cb */
static struct rt_semaphore shell_rx_sem; /* 定义一个静态信号量 *//*** @brief  USART1 GPIO 配置,工作模式配置。115200 8-N-1* @param  None* @retval None*/
void USART1_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;/* 初始化串口接收 ringbuffer  */rt_ringbuffer_init(&uart_rxcb, uart_rx_buf, UART_RX_BUF_LEN);/* 初始化串口接收数据的信号量 */rt_sem_init(&(shell_rx_sem), "shell_rx", 0, 0);/* config USART1 clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);/* USART1 GPIO config *//* Configure USART1 Tx (PA.09) as alternate function push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);    /* Configure USART1 Rx (PA.10) as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);USART_DeInit(USART1);/* USART1 mode config */USART_InitStructure.USART_BaudRate = 115200;USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No ;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART1, &USART_InitStructure);/* 使能串口1接收中断 */USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);USART_Cmd(USART1, ENABLE);
}/*** @brief  配置USART1接收中断* @param  None* @retval None*/
void NVIC_Configuration(void)
{NVIC_InitTypeDef NVIC_InitStructure; /* Configure the NVIC Preemption Priority Bits */  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);/* Enable the USARTy Interrupt */NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;	 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
}/*输出一个字符,系统函数,函数名不可更改 */
void rt_hw_console_output(const char *str)
{rt_size_t  i = 0, size = 0;char a = '\r';/*清楚标志位*/USART_ClearFlag(USART1,USART_FLAG_TC);size = rt_strlen(str);for (i = 0; i < size; i++){if (*(str + i) == '\n'){/* 发送一个字节数据到USART1 */USART_SendData(USART1, (uint8_t) a);/* 等待发送完毕 */while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);			}/* 发送一个字节数据到USART1 */USART_SendData(USART1, (uint8_t) *(str+i));/* 等待发送完毕 */		while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);	}
}/* 移植 FinSH,实现命令行交互, 需要添加 FinSH 源码,然后再对接 rt_hw_console_getchar */
/* 中断方式 */
char rt_hw_console_getchar(void)
{char ch = 0;/* 从 ringbuffer 中拿出数据 */while (rt_ringbuffer_getchar(&uart_rxcb, (rt_uint8_t *)&ch) != 1){rt_sem_take(&shell_rx_sem, RT_WAITING_FOREVER);} return ch;   
}/* 第三部分:中断部分*/void USART1_IRQHandler(void)
{int ch = -1;   /* enter interrupt */rt_interrupt_enter();          //在中断中一定要调用这对函数,进入中断if( (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) && (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) != RESET) ){ 	while (1)      {ch = -1;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){ch = USART_ReceiveData(USART1);}if(ch ==-1){break;}/* 读取到数据,将数据存入 ringbuffer */rt_ringbuffer_putchar(&uart_rxcb, ch);}rt_sem_release(&shell_rx_sem);} /* leave interrupt */rt_interrupt_leave();    //在中断中一定要调用这对函数,离开中断
}

【注】需要确认 rtconfig.h 中已使能 RT_USING_CONSOLE 宏定义

移植完成后,将程序下载到板子中,打开串口助手,在发送去输入字符,点击发送即可进行交互。注意一定要有换行符。
在这里插入图片描述

这里推荐使用xshell等工具,用起来就有种Linux终端的感觉。

在这里插入图片描述




代码获取方法

1.长按下面二维码,关注公众号[嵌入式实验楼]
2.在公众号回复关键词[RT-Thread]获取资料
在这里插入图片描述



欢迎访问我的网站:

BruceOu的哔哩哔哩
BruceOu的主页
BruceOu的博客
BruceOu的CSDN博客
BruceOu的简书

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Element 输入框input响应回车事件

    为对应的input输入框添加keyup.enter.native事件 <el-input placeholder"请输入内容" v-model"searchInput" keyup.enter.native"search"></el-input>... method:{search(){console.log(searchInput 输入框点击了回车键&#xff0c…...

    2024/3/23 2:39:03
  2. RS485电路图

    ...

    2024/3/23 2:39:00
  3. #数位DP

    数位DP 一、计数问题 题目链接 第一次做真的很难&#xff0c;总之十分耗费时间。 第一次批注得这么满…… #include <iostream> #include <algorithm> #include <vector> using namespace std; const int N 10; //get前面前缀部分的数值&#xff0c;即前…...

    2024/3/23 6:50:03
  4. zab选举

    1.选举 每个节点都有一个投票池,以3个节点为例,A(事务id1),B(事务id2),C(事务id1) 1.刚开始每人投票给自己,此时三个节点的投票池都是各自投自己. 2.三个把投票都投给其余两人.例如A把票投给BC,B收到后,比较事务id,自己大,不用改票,但是记录下A投A;同理C也是 3.B把票投个AC…...

    2024/5/1 23:24:20
  5. 【PAT甲级A1084】Broken Keyboard (20分)(c++)

    1084 Broken Keyboard (20分) 作者&#xff1a;CHEN, Yue 单位&#xff1a;浙江大学 代码长度限制&#xff1a;16 KB 时间限制&#xff1a;400 ms 内存限制&#xff1a;64 MB On a broken keyboard, some of the keys are worn out. So when you type some sentences, the ch…...

    2024/4/17 5:30:17
  6. 分布式专题|面试官问我了解Mysql主从复制原理么,我能说不会么?

    搭建Mysql主从同步之前&#xff0c;我们先来说他们之间同步的过程与原理&#xff1a; 同步复制过程 献上一张图&#xff0c;这张图诠释了整个同步过程 主从复制过程&#xff1a; slave节点与主节点进行连接&#xff0c;建立主从关系&#xff0c;并把从哪开始同步&#xff…...

    2024/4/21 0:33:26
  7. Java中的static详细讲解

    【1】static可以修饰&#xff1a;属性&#xff0c;方法&#xff0c;代码块&#xff0c;内部类。 【2】static修饰属性&#xff1b; public class Test {//属性&#xff1a;int id;static int sid;//这是一个main方法&#xff0c;是程序的入口&#xff1a;public static void …...

    2024/4/17 6:44:43
  8. 06Numpy输入与输出

    一、numpy二进制文件 numpy中二进制文件有两种形式&#xff0c;分别为npy、npz&#xff0c;其中&#xff1a; npy格式是以二进制的方式储存的文本文件&#xff0c;第一行中用文本形式保存了数据的元信息&#xff08;ndim、dtype、shape等&#xff09;&#xff0c;可以用二进制…...

    2024/4/24 22:58:34
  9. 自定义类型

    1.结构体 结构体的声明 1.普通结构体 struct tag {member-list; }variable-list;2.匿名结构体 struct {int a;char b;float c; }x;结构的自引用 struct Node {int data;struct Node * next; }结构体变量的定义和初始化 1.普通结构体定义和初始化 struct Point {int x;i…...

    2024/3/23 6:49:57
  10. docker下的nginx

    nginx 1 启动nginx #取出nginx容器默认配置文件 mkdir -p /data/nginx/ docker run -d --name tmp-nginx-container nginx docker cp tmp-nginx-container:/etc/nginx/nginx.conf /data/nginx/ docker cp tmp-nginx-container:/etc/nginx/conf.d /data/nginx/ docker cp tmp-…...

    2024/3/23 6:49:57
  11. 可持久化专题

    一切之始主席树https://blog.csdn.net/weixin_44879687/article/details/98186932 可持久化并查集 https://www.luogu.com.cn/problem/P3402 https://www.luogu.com.cn/blog/saisbook/solution-p3402 https://www.luogu.com.cn/blog/flashblog/solution-p3402 //首先可持久化…...

    2024/3/23 6:49:56
  12. 更改NavMenu 导航菜单激活时的背景颜色

    效果图 方法 写在< style >中 .el-menu-item.is-active {background-color: #2674c5 !important; }我这边显示的是灰色的&#xff0c;我以为没用&#xff0c;原来是可以用的...

    2024/4/8 0:17:21
  13. 【数据结构】二叉树的建立与遍历

    算法设计思路 二叉树的建立采用struct指针建立结点&#xff0c;每个结点内建两个struct指针来指向它的左右孩子&#xff0c;其中建立方法可采用先序&#xff0c;中序、后序。这里仅介绍先序建树&#xff0c;中序建树和后序建树实际上殊途同归。 建树代码如下 void build(Btree …...

    2024/3/23 6:49:53
  14. Collapsed Gibbs Sampling For LDA

    一、分布介绍 1.多项分布 重复进行n次独立随机试验&#xff0c;每次实验结果有kkk种&#xff0c;第iii种结果出现的概率为pip_ipi​&#xff0c;第iii种结果出现的次数为nin_ini​&#xff0c;则&#xff1a; P(X1n1,X2n2,...,Xknk)P(X_1n_1,X_2n_2,...,X_kn_k)P(X1​n1​,X2…...

    2024/3/23 6:49:55
  15. c语言入门

    c语言入门 C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好&#xff0c;可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言&#xff0c;所以说学习C语言是进入编程…...

    2024/3/23 2:39:17
  16. 多线程的创建 两种方式以及使用建议

    文章目录多线程的创建方式一、继承于Thread类步骤代码方式二、实现 Runnable接口代码两者的联系与使用技巧多线程的创建 方式一、继承于Thread类 步骤 1.创建一个继承于 Thread类的子类2.重写 Thread 类阶run()-ー>将此线程放行的操作声明在run()中3.创建 MyThread类的子…...

    2024/4/10 8:43:53
  17. 2020年危险化学品经营单位安全管理人员新版试题及危险化学品经营单位安全管理人员免费试题

    题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2020年危险化学品经营单位安全管理人员新版试题及危险化学品经营单位安全管理人员免费试题&#xff0c;包含危险化学品经营单位安全管理人员新版试题答案和解析及危险化学品经营单位安全管理人员免费试题练习。由安全…...

    2024/3/23 2:39:13
  18. 关于博弈论的10个趣味模型

    本书主要讲了博弈论的几个基础&#xff0c;常见的模型&#xff0c;类别应该是科普性的书&#xff0c;下面是个人读完了这本书之后从不同的模型出发的简略的笔记&#xff0c;只是随便记一下hhh 1&#xff1a;囚徒困境 两个囚犯甲乙被抓后分别有招供和不招供两种选择&#xff0…...

    2024/3/23 2:39:12
  19. 2020年建筑电工(建筑特殊工种)免费试题及建筑电工(建筑特殊工种)复审考试

    题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2020年建筑电工(建筑特殊工种)免费试题及建筑电工(建筑特殊工种)复审考试&#xff0c;包含建筑电工(建筑特殊工种)免费试题答案和解析及建筑电工(建筑特殊工种)复审考试练习。由安全生产模拟考试一点通公众号结合国家…...

    2024/3/30 23:47:12
  20. 免疫检查点B7-H3,实体瘤新进展

    2020年7月&#xff0c;Y-mAbs Therapeutics宣布&#xff0c;根据美国FDA的滚动审评程序&#xff08;Rolling Review&#xff09;&#xff0c;已经开始提交Omburtamab的生物制品许可申请(“BLA”)。Omburtamab是放射性标记的单克隆抗体8H9&#xff08;131I-8H9&#xff09;&…...

    2024/3/23 2:39:10

最新文章

  1. 报错Unable to install JS,且提示Unable to run npm install【鸿蒙报错已解决】

    文章目录 项目场景:问题描述原因分析:解决方案:此Bug解决方案总结Bug解决方案寄语项目场景: 最近遇到了这个问题,看到网上也有人在询问这个问题,实操了很多网上的解决方案发现并不能解决这个Bug,所以我在解决这个问题后,总结了自己和其他人的解决经验,进行了整理,写…...

    2024/5/1 23:23:21
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. Web大并发集群部署之集群介绍

    一、传统web访问模型 传统web访问模型完成一次请求的步骤 1&#xff09;用户发起请求 2&#xff09;服务器接受请求 3&#xff09;服务器处理请求&#xff08;压力最大&#xff09; 4&#xff09;服务器响应请求 传统模型缺点 单点故障&#xff1b; 单台服务器资源有限&…...

    2024/5/1 13:15:58
  4. redis之主从复制、哨兵模式

    一 redis群集有三种模式 主从复制&#xff1a; 主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。 主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均衡和简单的故障恢复。 缺陷&#xff1a; 故障恢复无法自动化&…...

    2024/5/1 13:42:29
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/1 10:25:26
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/1 13:20:04
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/1 21:18:12
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/1 4:07:45
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/4/30 23:32:22
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/4/30 23:16:16
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/1 6:35:25
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/1 11:24:00
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/1 4:35:02
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/1 20:22:59
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/4/30 22:14:26
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/1 6:34:45
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/4/30 22:57:18
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/4/30 20:39:53
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/1 4:45:02
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/1 8:32:56
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/1 14:33:22
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/1 11:51:23
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/1 5:23:20
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/1 20:56:20
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57