项目二十三:电阻测量(需要简单的外围检测电路,将电阻转换为电压)测量100,1k,4.7k,10k,20k的电阻阻值,由数码管显示。要求测试误差 <10%
资料查找:
01 方案选择
使用单片机测量电阻有多种方法,以下是一些常见的方法及其原理:
- 串联分压法(ADC)
- 原理:根据串联电路的分压原理,通过测量已知电阻和待测电阻上的电压,计算出待测电阻的阻值。
- 优点:电路简单,易于实现。
- 缺点:测量精度受电源电压稳定性和电压测量精度的影响。
对于89C5x单片机一般需要外接PCF8591(A/D转换芯片)
直流电桥法原理:利用直流电桥的平衡原理,通过调节电位器使电桥平衡,从而计算出待测电阻的阻值。优点:测量精度较高。缺点:电路相对复杂,调节较为麻烦。
恒流源法原理:将恒流源施加到待测电阻上,通过测量电阻两端的电压来计算电阻值。优点:测量精度较高,不受电源电压波动的影响。缺点:需要稳定的恒流源电路,实现相对复杂。
频率法原理:利用RC振荡电路和555定时器电路,将电阻转换为频率信号,通过测量频率来计算电阻值。优点:测量速度快,适用于动态测量。缺点:测量精度受振荡电路稳定性和频率测量精度的影响。
- IO口测量法
- 原理:使用单片机的IO口通过电容充电时间来测量电阻。电容充电时间与电阻成正比,通过测量充电时间来计算电阻值。
- 优点:不需要额外的AD转换电路,利用单片机IO口即可实现。
- 缺点:测量精度受单片机定时器精度和电容稳定性的影响。
以为大部分单片机通用,试了一下,发现STC89C52内部上拉有干扰
2 使用单片机的IO口通过电容充电时间来测量电阻
测量原理
- 使用两个单片机IO口,连接两个电阻,向同一个电容充电。设置一个IO口为输出端口,另一个为输入端口。
- 输出端口通过连接的电阻向电容充电。电容上的电压上升,当超过一定阈值,输入端口逻辑电平就会变成1。
关于阈值可以通过输入三角波得到,但是我们并不需要知道(比值可消)
- 这个充电时间与终止电压、阈值电压以及RC对应的时间常数有关系。具体数值由这个公式决定:
- 对应的时间与R2成正比。因此,两次时间的比值,就等于电阻的比值。如果已知其中一个电阻阻值,另外一个电阻便可以根据时间比值计算出来。12
实验步骤
- 需要一个电容和两个电阻。电容容值为313.8nF,电阻1的阻值为19.545kΩ;电阻2的阻值为4.718kΩ。
- 电容一端接地,另外一端与两个电阻相连。两个电阻分别与单片机的PF0,PF1端口相连。
- 设置PF0为输出端口,PF1为输入端口。周期改变PF0高低电平。分别测量PF0,以及电容上的电压信号。
- 测量软件先将PF0,PF1输出0电平,对于电容进行放电。然后将其中一个设置为输入端口,另外一个置为高电平,对电容充电。同时启动定时器1进行计时。
- 在此过程中,监视输入端口逻辑电平是否为1。当输入端口变为1时,停止定时器,并读取时间。然后再进行放电,更换另外一个端口为输入端口。测试充电时间。1
实验结果
- 测试298个数据进行统计。数据的平均值为4.119,标准方差为0.043。测量平均值比实际电阻比值4.143小了0.6%。1
3 硬件部分
4 软件部分
介绍:
STC89C52的端口P2是一个双向I/O口,每个引脚(如P2.0、P2.1等)
P0=1时为上拉输出,P0=0时为低电平输出
因此在已有上拉输入的条件下,也同样理论可行
最终按照如图思路把代码改出来了,但发现因为单片机太低级了,影响了开发效率
那就准备直接ADC写了算了
main.c
#include <reg52.h>//0.000 001 085069444444444=1
sbit IO1 = P2^2;
sbit IO2 = P2^3;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;void Delay_ms(int ms) //@11.0592MHz
{unsigned char data i, j;do{i = 15;j = 90;do{while (--j);} while (--i);}while (--ms);
}unsigned char code LedChar[] = { //数码管显示字符转换表0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
unsigned char LedBuff[6] = { //数码管显示缓冲区0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};bit StopwatchRunning = 0; //秒表运行标志
bit StopwatchRefresh = 1; //秒表计数刷新标志
unsigned char DecimalPart = 0; //秒表的小数部分
unsigned int IntegerPart = 0; //秒表的整数部分
unsigned char T0RH = 0; //T0重载值的高字节
unsigned char T0RL = 0; //T0重载值的低字节
unsigned long time_R1, time_R2; // 用于存储充电时间
unsigned long Rx = 0;
float ratio =0;
unsigned char flag1s = 0;
void ConfigTimer0(unsigned int ms);
unsigned long timer_read();
void U_Measure();
void LedScan();
void LCD_paly();
void main()
{EA = 1; //开总中断ENLED = 0; //使能选择数码管ADDR3 = 1;P2 = 0xFE; //P2.0置0,选择第4行按键作为独立按键ConfigTimer0(6); //配置T0定时2mswhile (1){U_Measure();while (1){LedScan();LCD_paly();}}
}void U_Measure()
{// 第一步:放电IO1 = 1;IO2 = 1;TR0 = 0;Delay_ms(20); // 确保电容放电干净// 第二步:测量参考电阻回路上的充电时间IO1 = 0;IO2 = 1;TR0 = 1;while(IO2<=0); // 等待充电结束time_R1 = timer_read(); // 读取计时器值// 第三步:放电IO1 = 1;IO2 = 1;TR0 = 0;Delay_ms(20); // 确保电容放电干净// 第四步:测温度电阻回路上的充电时间IO1 = 1;IO2 = 0;TR0 = 1;while(IO1<=0); // 等待充电结束time_R2 = timer_read(); // 读取计时器值// 第五步:计算电阻比率ratio = ((time_R1*10) / (time_R2*10))/10;Rx=ratio;//flag1s = 1;}
/* 配置并启动T0,ms-T0定时时间 */
void ConfigTimer0(unsigned int ms)//最大71ms
{unsigned long tmp; //临时变量tmp = 11059200 / 12; //定时器计数频率tmp = (tmp * ms) / 1000; //计算所需的计数值tmp = 65536 - tmp; //计算定时器重载值tmp = tmp + 18; //补偿中断响应延时造成的误差(经验值)
// T0RH = (unsigned char)(tmp>>8); //定时器重载值拆分为高低字节
// T0RL = (unsigned char)tmp;T0RH = 0; //定时器重载值拆分为高低字节T0RL = 0;TMOD &= 0xF0; //清零T0的控制位TMOD |= 0x01; //配置T0为模式1=16位TH0 = T0RH; //加载T0重载值TL0 = T0RL;ET0 = 1; //使能T0中断}
/* 秒表计数显示函数 */
void LedScan()
{// flag1s = 0; //1秒定时标志清零//以下代码将Rx按十进制位从低到高依次提取并转为数码管显示字符LedBuff[0] = LedChar[Rx%10];LedBuff[1] = LedChar[Rx/10%10];LedBuff[2] = LedChar[Rx/100%10];LedBuff[3] = LedChar[Rx/1000%10];LedBuff[4] = LedChar[Rx/10000%10];LedBuff[5] = LedChar[Rx/100000%10];}
void LCD_paly()
{static signed char i;P0 = 0xFF; //显示消隐switch (i){case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=LedBuff[0]; break;case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=LedBuff[1]; break;case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=LedBuff[2]; break;case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=LedBuff[3]; break;case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=LedBuff[4]; break;case 5: ADDR2=1; ADDR1=0; ADDR0=1; i=0; P0=LedBuff[5]; break;default: break;}}/* 定时停止函数 */
unsigned long timer_read()
{unsigned long tmp1 =0;TR0 = 0; tmp1 = (unsigned char)((TH0-T0RH)<<8)|(unsigned char)(TL0-T0RL); //定时器重载值拆分为高低字节TH0 = T0RH; //重新加载重载值TL0 = T0RL;return tmp1;
}/* T0中断服务函数,完成数码管、按键扫描与秒表计数 */
void InterruptTimer0() interrupt 1
{TH0 = T0RH; //重新加载重载值TL0 = T0RL;
// LedScan(); //数码管扫描显示}
02 使用方法——串联分压法(ADC)测电阻
完整工程代码部分,待课设结束再公开
如果需要技术支持可以加我的QQ交流:
27969203789
02 实验现象
03 硬件部分
金沙滩51单片机+需要测量相近的电阻
04 软件部分
核心部分:
val = (GetADCValue(0)*2.5); //获取ADC通道0的转换值 电压值=转换结果*2.48V/255,式中的25隐含了一位十进制小数
Rx=(val/(6375-val))*R1;
XX 拓展资料(收集资料仅供参考):
虽然STC89C52无法配置上下拉操作,但是一般现代翻新的芯片都可以配置,至于配置方法可能类似如下:
例如:
有些单片机的端口P2的输入和输出模式通过配置端口的P2M0和P2M1寄存器来控制。P2M0和P2M1分别是P2端口的输入/输出模式控制寄存器。
关于P2M1 和 P2M0 寄存器介绍:
P2M1 和 P2M0 寄存器是常见的微控制器(例如 51 系列单片机)中的特定控制寄存器,用于设置端口(特别是端口 2)的功能模式。
通常在 51 系列单片机中,P2M1 和 P2M0 寄存器用于控制端口 2 的工作模式(例如是否作为 I/O 端口,或者是否用于特殊功能)。
1. P2M1 寄存器:
P2M1 寄存器的位数通常是 8 位,每一位对应于端口 2 的各个引脚的模式。具体来说,P2M1 中的每一位控制端口 2 的每一个引脚的工作方式。
位 7 (P2.7):
- 0: 作为 I/O 端口;
- 1: 用于特殊功能。
位 6 (P2.6):
- 0: 作为 I/O 端口;
- 1: 用于特殊功能。
依此类推,P2M1 的每一位控制对应的端口引脚的模式。
2. P2M0 寄存器:
P2M0 寄存器也是 8 位,与 P2M1 配合使用,进一步控制端口 2 的引脚模式。它的每一位也用于设置端口 2 上每个引脚的功能模式。例如:
- 位 7 (P2.7):可以通过设置此位来选择端口引脚的功能(是 I/O,还是其他功能)。
- 位 6 (P2.6):控制端口引脚的工作模式。
P2M1 和 P2M0 的配合:
P2M1 和 P2M0 配合使用,通常具有以下几个常见的工作模式(以位 P2.x 为例):
- 00:作为普通的数字 I/O 端口;
- 01:用于某些特定的功能,如外部中断等;
- 10:用于其他一些特殊功能,例如定时器、串口等;
- 11:也可以用于其他特定功能模式。
总结:
- P2M1 和 P2M0 寄存器通常是 8 位,每一位对应端口 2 上的一个引脚(P2.0 到 P2.7)的功能控制。
- 每一位设置为 0 或 1,控制对应引脚是作为 I/O 端口,还是用于特定的功能模式
P2 引脚 | P2M1 | P2M0 | 描述 |
---|---|---|---|
P2.x | 0 | 0 | 普通输入(无上下拉电阻) |
P2.x | 0 | 1 | 带下拉电阻输入模式(低电平有效) |
P2.x | 1 | 0 | 推挽输出模式 |
P2.x | 1 | 1 | 开漏输出模式 |
一般高级的51单片机的寄存器操作,可以通过P2M1和P2M0的配置来控制P2口的工作模式
配置P2.0为下拉输入模式。我们清除P2M1的对应位(即
P2M1 &= 0xFE
),然后设置P2M0的对应位(即P2M0 |= 0x01
)来启用下拉电阻。
配置P2.0为推挽输出模式。我们设置P2M1的对应位(即
P2M1 |= 0x01
)并清除P2M0的对应位(即P2M0 &= 0xFE
)
int IN1(void)
{
// 设置P2.0为下拉输入模式P2M1 &= 0xFE; // P2M1位为0P2M0 |= 0x01; // 设置P2M0位为1,启用下拉输入模式}int IN2(void)
{
// 设置P2.0为下拉输入模式P2M1 &= 0xFD; // P2M1位为0P2M0 |= 0x02; // 设置P2M0位为1,启用下拉输入模式}void ON1(void)
{// 设置P2.0为推挽输出模式P2M1 |= 0x01; // 设置P2M1位为1P2M0 &= 0xFE; // 设置P2M0位为0,设置为推挽输出模式
}void ON2(void)
{// 设置P2.0为推挽输出模式P2M1 |= 0x02; // 设置P2M1位为1P2M0 &= 0xFD; // 设置P2M0位为0,设置为推挽输出模式
}
相关文章:
项目二十三:电阻测量(需要简单的外围检测电路,将电阻转换为电压)测量100,1k,4.7k,10k,20k的电阻阻值,由数码管显示。要求测试误差 <10%
资料查找: 01 方案选择 使用单片机测量电阻有多种方法,以下是一些常见的方法及其原理: 串联分压法(ADC) 原理:根据串联电路的分压原理,通过测量已知电阻和待测电阻上的电压,计算出…...
如何使用checkBox组件实现复选框
文章目录 概念介绍使用方法示例代码我们在上一章回中介绍了DatePickerDialog Widget相关的内容,本章回中将介绍Checkbox Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的Checkbox也是叫复选框,没有选中时是一个正方形边框,边框内容是空白的,选中时会…...
用bootstrap搭建侧边栏
要注意: 标签的id"v-pills-dataset1-tab"要和跳转内容的aria-labelledby"v-pills-dataset1-tab"一致 标签的aria-controls"v-pills-dataset1"要和跳转内容的id"v-pills-dataset1"一致 <!-- 左边的列(侧边栏…...
手眼标定工具操作文档
1.手眼标定原理介绍 术语介绍 手眼标定:为了获取相机与机器人坐标系之间得位姿转换关系,需要对相机和机器人坐标系进行标定,该标定过程成为手眼标定,用于存储这一组转换关系的文件称为手眼标定文件。 ETH:即Eye To …...
巧记斜边函数hypot
hypot是一个数学函数,源于英文"hypotenuse(斜边)",hypot(a, b)返回直角边边长为a、b的直角三角形(right-angled triangle)的斜边长度。该函数定义在<math.h>头文件中,其功能相当…...
STM32单片机芯片与内部33 ADC 单通道连续DMA
目录 一、ADC DMA配置——标准库 1、ADC配置 2、DMA配置 二、ADC DMA配置——HAL库 1、ADC配置 2、DMA配置 三、用户侧 1、DMA开关 (1)、标准库 (2)、HAL库 2、DMA乒乓 (1)、标准库 ÿ…...
【程序人生】掌握一门编程语言
掌握一门编程语言不仅仅是能够编写正确的语法,它还涉及到对语言特性、工具链、最佳实践以及解决问题的能力有深入的理解。以下是衡量你是否掌握了某门编程语言的关键指标: 语法与基本概念 语法熟悉度:能够在不查阅文档的情况下写出正确的代码…...
数据库发生了死锁怎么办
当项目中存在公共的数据表,比如日志表,同时存在对这张表的读写操作,或者是对数据量较大的表加索引同时伴随其他并发操作,那么这张表就有较高概率发生死锁。 现象:对于这张表的任何操作都会被阻塞,项目出现…...
传递函数的幅值在0到1之间
为什么所有传递函数的幅值应该在 0 到 1 之间 在声学、振动学和信号处理等领域,传递函数的幅值表示系统对输入信号的响应幅度。在许多声学实验中,传递函数的幅值反映了声波的传输或反射特性。理论上,所有传递函数的幅值应当在 0 到 1 之间&a…...
[Unity Shader]【图形渲染】 数学基础4 - 矩阵定义和矩阵运算详解
矩阵是计算机图形学中的重要数学工具,尤其在Shader编程中,它被广泛用于坐标变换、投影变换和模型动画等场景。本文将详细介绍矩阵的定义、基本运算以及如何在Shader中应用矩阵,为初学者打下坚实的数学基础。 一、什么是矩阵? 矩阵是一个由数字排列成的长方形数组,通常记作…...
蓝桥杯练习生第四天
小蓝每天都锻炼身体。 正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。 小蓝跑步已经坚持了很长时间&#x…...
Jmeter压测实战:Jmeter二次开发之自定义函数
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 Jmeter是Apache基金会下的一款应用场景非常广的压力测试工具,具备轻量、高扩展性、分布式等特性。Jmeter已支持实现随机数、计数器、时间戳、大小写转换…...
梯度(Gradient)和 雅各比矩阵(Jacobian Matrix)的区别和联系:中英双语
雅各比矩阵与梯度:区别与联系 在数学与机器学习中,梯度(Gradient) 和 雅各比矩阵(Jacobian Matrix) 是两个核心概念。虽然它们都描述了函数的变化率,但应用场景和具体形式有所不同。本文将通过…...
[python SQLAlchemy数据库操作入门]-02.交易数据实体类建立
哈喽,大家好,我是木头左! 为了顺利地使用SQLAlchemy进行股票交易数据的处理,首先需要搭建一个合适的开发环境。这包括安装必要的软件包以及配置相关的依赖项。 安装Python及虚拟环境 下载并安装Python(推荐使用最新版)。创建一个新的虚拟环境以避免依赖冲突。python -m …...
python打包exe文件
由于用户需要,将采集数据解析成txt文件,为了方便使用,将python解析方法打包成exe文件供用户使用 安装环境 ./pip.exe install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simplepython导入需要的包 import tkinter as tk from tkin…...
C# opencvsharp 流程化-脚本化-(2)ROI
ROI ROI也是经常需要使用的方法。特别是在图像编辑中。ROI又称感兴趣的区域,但是图像是矩阵是矩形的,感兴趣的是乱八七糟的,所以还有一个Mask需要了解一下的。 public class RoiStep : IImageProcessingStep{public ImageProcessingStepType…...
【Python】基于Python的CI/CD工具链:实现自动化构建与发布
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代软件开发中,持续集成(CI)和持续交付(CD)已经成为提高开发效率和软件质量的重要实践。CI/CD流程帮助开发团队自动化构建、测试、…...
Flutter组件————Scaffold
Scaffold Scaffold 是一个基础的可视化界面结构组件,它实现了基本的Material Design布局结构。使用 Scaffold 可以快速地搭建起包含应用栏(AppBar)、内容区域(body)、抽屉菜单(Drawer)、底部导…...
2024年《网络安全事件应急指南》
在这个信息技术日新月异的时代,网络攻击手段的复杂性与日俱增,安全威胁层出不穷,给企事业单位的安全防护能力带 来了前所未有的挑战。深信服安全应急响应中心(以下简称“应急响应中心”)编写了《网络安全事件应急指南》…...
通过smem 定时检测系统内存占用情况
编写定时任务脚本 cat >> /usr/local/bin/smem.sh <<-"EOF"if [[ ! -d /var/log/smem ]];thenmkdir -p /var/log/smem fi smem -tk >> /var/log/smem/smem.log EOFchmod 755 /usr/local/bin/smem.sh配置定时任务 echo "" >> /et…...
京准电钟:电厂自控NTP时间同步服务器技术方案
京准电钟:电厂自控NTP时间同步服务器技术方案 京准电钟:电厂自控NTP时间同步服务器技术方案 随着计算机和网络通信技术的飞速发展,火电厂热工自动化系统数字化、网络化的时代已经到来。一方面它为控制和信息系统之间的数据交换、分析和应用…...
Face to face
1.西班牙添加5G volte 首先carrierconfig里使能 <boolean name"carrier_nr_available_bool" value"true" /> <boolean name"carrier_volte_available_bool" value"true" /> 其次 组件apn配置ims参数 2.印度j…...
C语言中的文件操作:基础与实践
欢迎来到我的:世界 希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 ! 目录 前言内容文件文件操作:数据库文件概述:文件的打开和关闭理解流的概念文件指针 文件的打开与关闭文件的读和写文件的顺序…...
从地铁客流讲开来:十二城日常地铁客运量特征
随着城市化进程的加速和人口的不断增长,公共交通系统在现代都市生活中扮演着日益重要的角色。地铁作为高效、环保的城市交通方式,已经成为居民日常出行不可或缺的一部分。本文聚焦于2024年10月28日至12月1日期间,对包括北上广深这四个超一线城…...
VMWare 的克隆操作
零、碎碎念 VMWare 的这个克隆操作很简单,单拎出来成贴的目的是方便后续使用。 一、操作步骤 1.1、在“源”服务器上点右键,选择“管理--克隆” 1.2、选择“虚拟机的当前状态”为基础制作克隆,如下图所示,然后点击“下一页” 1.3、…...
经济学 ppt 2 部分
前言 上一次复习经济学是好久之前了,看了第一章的 ppt ,好像重点就是谁是软件经济学之父。昨天老师讲了一下题型,20 分选择题, 20 分判断题,20 分计算题,6 6 8 三个计算题,25 分表格࿰…...
R(4.4.2)的下载与安装(Windows系统)
进入官网:https://www.r-project.org/ 首先点击CRAN链接,选择一个镜像链接地址 进入CRAN所显示页面如下: 选择China下的一个镜像站点,本文选择第一个 选择windows系统下载 点击“base” 下载: 打开下载的文件 默认中文…...
一文流:JVM精讲(多图提醒⚠️)
一文流系列是作者苦于技术知识学了-忘了,背了-忘了的苦恼,决心把技术知识的要点一笔笔✍️出来,一图图画出来,一句句讲出来,以求刻在🧠里。 该系列文章会把核心要点提炼出来,以求掌握精髓,至于其他细节,写在文章里,留待后续回忆。 目前进度请查看: :::info https:/…...
C盘下的文件夹
在Windows操作系统中,C盘通常是系统安装的盘符,其中包含了许多重要的文件夹和系统文件。以下是一些常见的文件夹:系统文件夹 Windows: 包含Windows操作系统的核心文件和组件。 Program Files: 存储大多数安装的软件程序。 Program Files (x86…...
视频直播点播平台EasyDSS与无人机技术的森林防火融合应用
随着科技的飞速发展,无人机技术以其独特的优势在各个领域得到了广泛应用,特别是在森林防火这一关键领域,EasyDSS视频平台与无人机技术的融合应用更是为传统森林防火手段带来很大的变化。 一、无人机技术在森林防火中的优势 1、快速响应与高…...
通过阿里云 Milvus 与 PAI 搭建高效的检索增强对话系统
背景介绍 阿里云向量检索服务Milvus版(简称阿里云Milvus)是一款云上全托管服务,确保了了与开源Milvus的100%兼容性,并支持无缝迁移。在开源版本的基础上增强了可扩展性,能提供大规模 AI 向量数据的相似性检索服务。相…...
Unity 3D饼状图效果
一. 效果展示 二.基础类 using System.Collections; using System.Collections.Generic; using UnityEngine;public class DrawCylinder : MonoBehaviour {// 网格渲染器MeshRenderer meshRenderer;// 网格过滤器MeshFilter meshFilter;// 用来存放顶点数据List<Vector3>…...
OpenHarmony-4.HDI 框架
HDI 框架 1.HDI介绍 HDI(Hardware Device Interface,硬件设备接口)是HDF驱动框架为开发者提供的硬件规范化描述性接口,位于基础系统服务层和设备驱动层之间,是连通驱动程序和系统服务进行数据流通的桥梁,是…...
ArcGIS Pro 3.4新功能2:Spatial Analyst新特性,密度、距离、水文、太阳能、表面、区域分析
Spatial Analyst 扩展模块在 ArcGIS Pro 3.4 中引入了新功能和增强功能。此版本为您提供了用于表面和区域分析的新工具以及改进的密度和距离分析功能,多种用于水文分析的工具性能的提高,一些新的太阳能分析功能。 目录 1.密度分析 2.距离分析 3.水文…...
GitLab分支管理策略和最佳实践
分支管理是 Git 和 GitLab 中非常重要的部分,合理的分支管理可以帮助团队更高效地协作和开发。以下是一些细化的分支管理策略和最佳实践: 1. 分支命名规范 • 主分支:通常命名为 main 或 master,用于存放稳定版本的代码。 • …...
uniapp自定义树型结构数据弹窗,给默认选中的节点,禁用所有子节点
兼容H5、安卓App、微信小程序 实现逻辑:给默认选中节点的所有子节点添加一个disabled属性,以此禁用子节点。 /components/sonTreeNode/sonTreeNode.vue 封装成组件 <template><view><view :class"[item,item.is_level1?pL1:item…...
方正畅享全媒体新闻采编系统 screen.do SQL注入漏洞复现
0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…...
5G 模组 RG500Q常用AT命令
5G 模组 RG500Q常用AT命令 5G 模组 RG500Q常用AT命令 at ATQNWPREFCFG\"mode_pref\",nr5g && sleep 1 at ATQNWPREFCFG\"nr5g_band\",79 && sleep 1 at atqnwlock\"commo…...
day38-SSH安全登录
机器准备 什么是SSH SSH 或 Secure Shell 协议是一种远程管理协议,允许用户通过 Internet 访问、控制和修改其远程服务器。 SSH 服务是作为未加密 Telnet 的安全替代品而创建的,它使用加密技术来确保进出远程服务器的所有通信都以加密方式进行。 SS…...
U盘出现USBC乱码文件的全面解析与恢复指南
一、乱码现象初探:USBC乱码文件的神秘面纱 在数字时代,U盘已成为我们日常生活中不可或缺的数据存储工具。然而,当U盘中的文件突然变成乱码,且文件名前缀显示为“USBC”时,这无疑给用户带来了极大的困扰。这些乱码文件…...
mac iterm2 使用 lrzsz
前言 mac os 终端不支持使用 rz sz 上传下载文件,本文提供解决方法。 mac 上安装 brew install lrzsz两个脚本 注意:/usr/local/bin/iterm2-send-zmodem.sh 中的 sz命令路径要和你mac 上 sz 命令路径一致。 /usr/local/bin/iterm2-recv-zmodem.sh 中…...
京东大数据治理探索与实践 | 京东零售技术实践
01背景和方案 在当今的数据驱动时代,数据作为关键生产要素之一,其在商业活动中的战略价值愈加凸显,京东也不例外。 作为国内领先的电商平台,京东在数据基础设施上的投入极为巨大,涵盖数万台服务器、数 EB 级存储、数百…...
应该连续学一个科目,还是多学科切换?
https://www.zhihu.com/question/333420829https://www.zhihu.com/question/333420829...
游戏何如防抓包
游戏抓包是指在游戏中,通过抓包工具捕获和分析游戏客户端与服务器之间传输的封包数据的过程。抓包工具可实现拦截、篡改、重发、丢弃游戏的上下行数据包,市面上常见的抓包工具有WPE、Fiddler和Charles Proxy等。 抓包工具有两种实现方式,一类…...
asp.net core发布配置端口号,支持linux
方式一,修改配置文件 appsettings.json 找到文件 appsettings.json, 添加如下节点配置,在linux环境需要设置0.0.0.0才可以正常代表本机,然后被其他机器访问,此处设置端口8000, "Kestrel": {&quo…...
基于linux下实现的ping程序(C语言)
linux下实现的ping程序 一、设计目的 PING程序是我们使用的比较多的用于测试网络连通性的程序。PING程序基于ICMP,使用ICMP的回送请求和回送应答来工作。由计算机网络课程知道,ICMP是基于IP的一个协议,ICMP包通过IP的封装之后传递。 课程设…...
109.【C语言】数据结构之求二叉树的高度
目录 1.知识回顾:高度(也称深度) 2.分析 设计代码框架 返回左右子树高度较大的那个的写法一:if语句 返回左右子树高度较大的那个的写法二:三目操作符 3.代码 4.反思 问题 出问题的代码 改进后的代码 执行结果 1.知识回顾…...
线段覆盖(c++)
题目描述 在一条数轴上,有 N 条线段,第 i 条线段的左端点是 si,右端点是 ei。如果线段有重叠(即使是端点重叠也算是重叠),则输出 “impossible”, 如果没有重叠则输出 “possible” 。 输入格式 多组…...
SSM 仓库管理系统
🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…...
基于Python3编写的Golang程序多平台交叉编译自动化脚本
import argparse import os import shutil import sys from shutil import copy2from loguru import loggerclass GoBuild:"""一个用于构建跨平台执行文件的类。初始化函数,设置构建的主文件、生成的执行文件名称以及目标平台。:param f: 需要构建的…...