从频率电磁测深原理出发,说明了人工源频率测深的电磁场存在3个场区,也只有远区场的可控源音频大地电磁测深(CSAMT)法的资料才能用音频大地电磁测深(AMT)法进行反演解释。对于存在中近区的CSAMT法资料,可进行近场校正,然后按AMT法解释。由于近场校正是建立在均匀半空间模型之上,校正误差大。为此提出了不加校正直接对比值视电阻率数据进行反演解释,最好按电磁场单分量资料解释,以减少不必要的校正误差。
1
MFC串口助手初级版实现(初始化、串口设置、修改参数、打开、关闭、状态显示)---代码注释非常详细,自己写的函数基本是逐行注释,重要的地方还特别的描述原理方法,非常适合新手练习使用。 //变量======================================== public: //自定义变量 HANDLE m_hCom; //串口句柄 volatile int m_bConnected; //串口连接成功指示 BOOL m_COMStatu; //串口状态指示 long m_rxlen; //接收数据个数 long m_txlen; //发送数据个数 //列表框变量 CComboBox m_Combo_Com; //列表框:串口 CComboBox m_Combo_Baud; //列表框:波特率 CComboBox m_Combo_Check; //列表框:校验位 CComboBox m_Combo_Data; //列表框:数据位 CComboBox m_Combo_Stop; //列表框:停止位 //字符变量 CString m_Str_Com; //字符变量:串口 CString m_Str_Baud; //字符变量:波特率 CString m_Str_Check; //字符变量:校验位 CString m_Str_Data; //字符变量:数据位 CString m_Str_Stop; //字符变量:停止位 //函数====================================================
2025-11-13 13:39:26 148.23MB 串口助手
1
华为擎云W515是现在很多行政、事业单位比较常用的arm64的办公用计算机,一般安装的是统信(UOS)的系统。 这个是ubuntu的live系统,安装了KDE桌面和WPS、QQ、微信、谷歌浏览器等。 总共两个包,这是第一个,一齐解压后得倒ISO文件,可以记录成光盘,也可以把ISO中的文件复制到U盘中的FAT32分区中,电脑启动时按F12,选光驱或U盘启动就可以了。 第二个包的地址:https://download.csdn.net/download/dbst213/90960618
2025-10-29 10:08:30 980MB
1
X6型卷烟包装机源自意大利G.D公司,是款高速包装机,已在国内多烟厂投入使用。与之相对应,上海烟草机械集团推出的ZB416型包装机,逐渐取代旧式中速的ZB45型包装机,预期成为国内主流机型。ZB416包装机是基于G.D公司的X6型,经过消化吸收后设计开发的,其在电控系统上,虽有系统差异,但工作原理基本一致。X6型采用的是MICRO2控制系统配合倍福模块,而ZB416型则全面使用倍福系统。由于作者在烟草包装机电控方面的丰富经验,包括对ZB45型和X6型的电控系统有深入的了解,因此对ZB416型电控系统也有相当的研究,作者的意图是通过发表C800的MICRO2程序及其解释文档,帮助同行理解X6控制程序,同时增进对ZB416控制原理的认识。 本文档包含了三个程序的原始代码文件,分别是“AE_00000”,“AE_00101”和“AE_01000”。它们相对简单,因此作者没有提供对应的解释文档。文中也提及了一些程序中的关键函数和模块,如ch_main_group_declare_function,ch_main_machine,ch_main_group等,它们是程序中不可或缺的部分。此外,文档还详细记录了程序的修改记录,包括修改日期、作者以及所作的描述。 文档的前言部分也强调了作者意图分享经验,通过逐步发表内容,希望促进同行之间的相互理解和专业知识的提升。显然,文档的发表不仅是为了说明特定的程序代码,更着重于通过这些内容,对电控系统的操作原理进行阐述和传播,这对于需要熟悉和操作这些设备的技术人员来说,无疑是非常有价值的。在文档的最后部分,作者还提到了文档中的一些文字识别错误,这可能是由于扫描技术的局限性导致的,作者鼓励读者通过上下文来理解这些错误。 本文档不仅是一份关于特定设备电控程序的技术资料,更是一份通过技术交流来提升行业整体技术水平的重要文献。内容包括了设备的概述、电控系统的介绍、相关程序代码的解读,以及作者在电控领域深耕多年的丰富经验分享。这对烟草包装机械电控领域的工程师和技术人员具有重要的指导意义,也对行业内部的技术交流和知识传播起到了积极的推动作用。
2025-10-23 11:20:07 252KB
1
STM32微控制器是一类广泛使用的32位ARM Cortex-M处理器系列,具有出色的性能和丰富的集成特性,非常适合用于嵌入式系统开发。远程升级(Remote Upgrade),又称为固件升级或远程更新,是嵌入式系统中的一项重要功能,它允许设备在不需物理接触的情况下升级其固件或软件。这对于维护和更新分布在广泛区域的设备尤其重要。Bootloader是实现远程升级的关键组件,它是在设备上电或复位时首先运行的一小段代码,负责初始化硬件并加载应用程序执行环境。而Keil MDK是基于ARM处理器的完整软件开发环境,广泛用于嵌入式应用的开发。 在“STM32远程升级学习记录(一):boot跳转APP的keil工程”这一主题下,重点讨论了如何在Keil工程中配置STM32的Bootloader以及应用程序(APP),以便实现Bootloader在设备上电后将控制权传递给应用程序的整个流程。这个过程对于开发一个具备远程升级能力的嵌入式系统至关重要。 Bootloader的工作原理是,在系统启动时,首先执行Bootloader程序,该程序会检查是否有固件更新可用,或者直接跳转到主应用程序执行。如果检测到新的固件,Bootloader可以负责将固件下载到设备,并将其写入程序存储器中,然后跳转到新的固件执行。如果没有更新,则直接跳转到主应用程序。 在实现Bootloader跳转到应用程序的过程中,需要考虑存储器布局和向量表的配置。STM32的存储器分为几个区域,如Bootloader区域、用户应用程序区域等,它们有不同的地址。因此,Bootloader与应用程序需要安装在这些特定的存储器区域中。同时,中断向量表也需要适当配置,以确保当中断发生时能够正确地跳转到对应的中断服务例程。 在Keil工程中,首先需要配置工程选项,设置好不同的存储区域地址。然后,需要编写Bootloader代码,实现必要的功能如固件更新检测和存储器写入。应用程序同样需要编写,并确保它能在Bootloader执行完其任务后正确运行。此外,应用程序与Bootloader之间的接口也需要明确,例如,应用程序开始运行的标志、Bootloader是否检测到升级等都需要明确的约定。 在文件名称列表中提到了“public_board_app”和“public_board_boot”,这可能指向了工程中具体的两个文件夹,分别存放应用程序代码和Bootloader代码。在开发过程中,这两个文件夹将分别编译成不同的二进制文件,最终烧录到STM32的相应存储区域。 为了实现Bootloader和应用程序之间的平滑跳转,可能需要在Bootloader中设置一个跳转指令,让其在完成初始化后,将控制权传递给应用程序。这个过程通常涉及到堆栈指针的初始化和向量表的正确设置。 在“STM32远程升级学习记录(一)”中,可能还会有对Bootloader与应用程序间的通信机制、远程升级协议的讨论。例如,Bootloader可能需要支持某种通信协议,如串口、USB、网络等,以便接收来自远程服务器的固件更新。此外,为确保升级过程的安全性,可能还需要实现校验机制,确保下载的固件是完整的且未被篡改。 STM32远程升级的关键在于Bootloader的设计与实现,它负责在设备启动时检查和加载固件,同时确保设备能够安全地接收和执行新的固件。Keil工程的配置、中断向量表的管理、存储器布局的分配以及应用程序与Bootloader之间的接口设计都是实现这一过程的重要组成部分。
2025-10-11 21:41:49 13.73MB stm32 bootloader
1
将图片二进制数据存到外部存储器里,然后读取外部存储器即可读取图片数据。 增加了外部FLASH来存图片数据并在显示屏显示出来,图片显示速度快,弥补了主控芯片内存不足的问题,但是采用最原始、最简单的将图片数据写入W25Q64的方法 在嵌入式系统开发中,STM32F103RCT6微控制器凭借其高性能和丰富的外设资源,成为广泛使用的32位MCU之一。配合使用0.99寸的TFT圆屏显示器,能够开发出多种交互式应用界面。在处理图形显示时,STM32F103RCT6的内置存储器往往容量有限,这就限制了可以存储和显示的图像数据大小。为了解决这一问题,开发者们采取了使用外部存储器扩展的方法。其中,W25Q64作为一款高速、大容量的串行外设接口(SPI)闪存,被广泛应用于扩展STM32F103RCT6的存储能力。 在本项目中,利用硬件SPI和DMA(直接内存访问)技术,可以高效地从外部的W25Q64 FLASH中读取图片数据。这种方法不仅提高了数据传输的速度,还减轻了MCU的负担,使得主控制器能够更加专注于处理其他任务。通过这种方式,可以在显示屏上快速显示存储在外部FLASH中的图片,有效地解决了主控芯片内存不足的限制。 此外,本项目的高级实现还包括了使用外部FLASH来存储图片数据的步骤。这一过程中,需要将图片转换为二进制格式,然后将其写入到W25Q64 FLASH中。由于W25Q64 FLASH是基于SPI接口的,因此在写入过程中,可以通过SPI总线直接与STM32F103RCT6进行通信,无需中间的转换接口,这样可以进一步提高数据传输效率。 对于图像显示这一块,项目采用了特定的显示驱动程序和相应的算法,这些驱动程序和算法专门针对0.99寸TFT圆屏显示器进行了优化,以确保图像显示质量。同时,利用DMA进行图像数据的读取可以减少CPU的参与,从而减少了对CPU资源的占用,提高了程序的运行效率和响应速度。 通过本项目的实施,不仅可以扩展STM32F103RCT6的存储能力,还能提升其图形显示的性能。这样的系统设计为嵌入式应用提供了更多的可能性,尤其是在那些需要处理大量数据或需要高质量显示的应用场景中,具有重要的实践价值和应用前景。
2025-09-09 14:11:42 4.87MB stm32 外部FLASH SPI
1
在计算机视觉和目标检测领域,有一项技术被广泛应用于物体识别和定位,这就是YOLO(You Only Look Once)模型。YOLO以其速度快、准确性高而著称,它能够将目标检测问题转化为一个回归问题,并且在检测速度与检测精度之间取得了较好的平衡。随着技术的发展,YOLO系列不断更新换代,YOLOv1作为该系列的首个版本,虽然准确率和速度相比后续版本有所不足,但在当时仍具有重要的里程碑意义。 而Crowdhuman数据集是一个特别针对人群密集场景下的人体检测和跟踪任务所设计的数据集,它的出现在很大程度上推动了人群计数和人群分析技术的发展。该数据集不仅包含了大量的人群图片,还标注了人体的头部位置,这为研究者提供了丰富的信息用于训练和评估他们的模型。由于人群场景的复杂性,这对目标检测算法的性能提出了更高要求。 本数据集将YOLOv1的标注格式应用于Crowdhuman数据集,这意味着每张图片中的人数及其位置都被标注成YOLOv1可以识别的格式。这样的数据集不仅可以直接用于训练,而且还可以通过YOLOv1的网络模型来进行人群统计,实现快速准确的人数统计功能。这对于人流量密集的场合,如商场、车站、机场等场所的人群监控具有重要的应用价值。例如,可以用于商业数据分析、安全管理、资源分配等多个领域。 将YOLO格式应用于Crowdhuman数据集,不仅让模型可以快速地定位图片中的人体,还能进行人数统计,这无疑为研究者提供了一个实用的工具,同时也推动了YOLO系列算法在人群检测和计数领域的应用。通过使用这种特定格式的数据集,研究者可以更加专注于模型的优化和算法的改进,而不需要从零开始收集和标注数据,从而节省了大量的时间和资源。 在技术层面,YOLOv1采用的是一种端到端的训练方式,它将图像分割成一个个格子,每个格子负责预测中心点落在该格子内的物体边界框和类别概率。这种设计使得模型在进行目标检测时能够更加迅速,同时也保持了较高的准确性。此外,YOLOv1模型在实际应用中具有较好的泛化能力,能够处理各种不同环境下的目标检测问题。 人群检测和计数是计算机视觉中的一个难点,而Crowdhuman数据集的出现正是为了解决这一难题。通过本数据集,研究者可以在丰富的场景下训练他们的模型,从而提高模型对于遮挡、密集排列等多种复杂情况的处理能力。随着深度学习技术的不断进步,结合YOLOv1格式的Crowdhuman数据集将能更好地推动人群检测技术的发展,为实际应用提供更为准确和高效的技术支撑。
2025-07-07 15:34:48 921.05MB YOLO 人数统计 目标检测 计算机视觉
1
嵌入式 Linux 系统编程常见问题解答 嵌入式 Linux 系统编程是一种非常重要的技术,它广泛应用于各种嵌入式设备中,如路由器、交换机、机顶盒、智能家电等。在嵌入式 Linux 系统编程中,开发者需要解决许多实际问题,本文将从三个方面对嵌入式 Linux 系统编程的常见问题进行解答。 问题 1: 使用基于文件指针的文件操作函数,实现把文本文件 a.txt 中的内容复制到 b.txt 中 答案:使用 C 语言中的文件操作函数,可以实现文件的复制。需要打开文件 a.txt 和 b.txt,使用 fopen 函数,并将文件指针 fpa 和 fpb 分别指向这两个文件。然后,使用 fgetc 函数读取文件 a.txt 的内容,并使用 fputc 函数将其写入文件 b.txt 中。使用 fclose 函数关闭文件。 代码实现: ```c #include int main() { FILE *fpa = fopen("a.txt", "rb"); FILE *fpb = fopen("b.txt", "wb"); char ch; while ((ch = fgetc(fpa)) != EOF) { fputc(ch, fpb); } fclose(fpa); fclose(fpb); return 0; } ``` 问题 2: 用基于文件描述符的文件操作函数,实现自己的简单的 cp 命令 答案:使用 Linux 系统调用中的文件描述符,可以实现文件的复制。需要使用 open 函数打开文件 a.txt 和 b.txt,并将文件描述符 fo1 和 fo2 分别指向这两个文件。然后,使用 read 函数读取文件 a.txt 的内容,并使用 write 函数将其写入文件 b.txt 中。使用 close 函数关闭文件。 代码实现: ```c #include #include #include #include #include #include int main(int argc, char *argv[]) { char buf[512] = {0}; int fo1 = open(argv[1], O_RDONLY); int fo2 = open(argv[2], O_WRONLY | O_CREAT | O_EXCL, 0755); if (fo2 == -1) { printf("error! file exist!\n"); exit(0); } int fr = 0; /* 开始复制 */ while ((fr = read(fo1, buf, sizeof(buf))) > 0) { write(fo2, buf, fr); } close(fo1); close(fo2); return 0; } ``` 问题 3: 从命令行传入某个 .c 或 .txt 文件的文件名,实现以下功能 答案:使用 C 语言中的文件操作函数和系统调用,可以实现文件的转换、文件信息的输出和权限的测试。需要使用 open 函数打开文件,并使用文件描述符 fd 指向该文件。然后,使用 lseek 函数将文件指针移动到文件开始,并使用 read 函数读取文件的内容。对于每个字符,使用 if 语句判断其是否为大写或小写字母,并进行互相转换。使用 write 函数将转换后的内容写回文件中。 代码实现: ```c #include #include #include #include #include #include #include #include void zhuanhuan(int fd) { char c; struct flock lock = {F_WRLCK, SEEK_SET, 0, 0, getpid()}; if (-1 == fcntl(fd, F_SETLK, &lock)) { perror("lock failed!\n"); exit(-1); } while ((read(fd, &c, sizeof(char)) > 0)) { if (c >= 'A' && c <= 'Z') c = c + 'a' - 'A'; else if (c >= 'a' && c <= 'z') c = c - 32; else continue; lseek(fd, -1, SEEK_CUR); write(fd, &c, sizeof(char)); } lock.l_type = F_UNLCK; if (-1 == fcntl(fd, F_SETLK, &lock)) { perror("unlock failed!\n"); exit(-1); } } void quanxian(char *filename) { if (!access(filename, F_OK)) { if (!access(filename, R_OK)) printf("r"); else printf("-"); if (!access(filename, W_OK)) printf("w"); else printf("-"); if (!access(filename, X_OK)) printf("x"); else printf("-"); } else printf("file not exist!\n"); } void xinxi(int fd) { struct stat a; // ... } ``` 嵌入式 Linux 系统编程需要解决许多实际问题,包括文件操作、文件描述符、系统调用等。本文通过三个问题的解答,展示了嵌入式 Linux 系统编程的常见问题和解决方法。
2025-07-02 16:38:58 56KB Linux系统 编程常见问题
1
【Q11】基于51单片机的多功能计算器设计(一).zip
2025-06-05 09:05:01 9.38MB 51单片机
1
vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一),cv可用 vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一),cv可用 vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一),cv可用 vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一),cv可用 vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一),cv可用 vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一),cv可用 vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一),cv可用 vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一),cv可用 vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一),c
2024-05-18 19:31:39 5KB vue.js leaflet
1