c# 本地离线OCR读取图片上文字(PaddleOCR),通过鼠标点击获取对应位置文字,通过输入编号获取对应位置文字
2024-10-13 16:37:14 77.28MB ocr
1
MSP430通过MSP-FET下载工具 MSP-FET下载指导 1、打开TIUSBFET文件夹,根据电脑不同的系统,选择驱动安装。 2、解压FET-Pro430-Lite v3.3-1.rar,按照步骤一步一步点击下一步完成安装。 3、将工装一端连接电脑,一端连接设备。连接设备时,用白色线靠近的那端的第一个拼,对准Vcc引脚,按顺序插入。 打开设备管理器,检查是否出MSP-FET430的串口标识。
2024-10-07 14:25:27 20.7MB MSP430 MSP-FET下载
1
在本文中,我们将深入探讨如何使用ESP8266微控制器通过MQTT协议与阿里云物联网平台进行交互,实现数据的上传和下载,以及获取实时时间和天气信息。ESP8266因其低成本、高性能和易用性,在物联网(IoT)项目中被广泛采用。而MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息协议,适用于低带宽、高延迟或不可靠的网络环境,特别适合于IoT设备。 我们需要在阿里云上创建一个物联网平台实例,并注册一个产品和设备。产品定义了设备的基本属性和功能,而设备则是实际连接到物联网平台的实体。在创建设备时,会得到一串设备密钥,这是设备身份验证的关键。 接下来,我们要配置ESP8266的Wi-Fi连接。使用Arduino IDE或者MicroPython等开发环境,加载相应的库,如ESP8266WiFi库,来连接到指定的Wi-Fi网络。确保设备能够稳定连接到互联网。 然后,我们要引入MQTT客户端库,如PubSubClient,用于实现MQTT协议的通信。设置MQTT服务器地址为阿里云物联网平台的地址,并使用之前获得的设备密钥进行身份验证。连接到MQTT服务器后,可以订阅特定的主题以接收来自云端的数据,同时发布到主题以上传本地数据。 数据的上传通常涉及传感器读取和数据封装。例如,可以连接温度传感器读取环境温度,将读取的值转化为字符串,然后通过MQTT客户端发布到预先定义的主题。阿里云平台接收到数据后,可以进行存储、处理和分析。 对于数据的下载,即云平台向设备下发数据,设备需要订阅特定的主题。当有新的消息到达时,MQTT客户端的回调函数会被触发,通过解析接收到的MQTT消息,可以获取到云端发送的数据。 时间获取通常涉及到NTP(Network Time Protocol)服务。ESP8266可以通过连接到NTP服务器,请求当前的UTC时间,并调整内部RTC(Real-Time Clock)同步。这样,设备就能保持与全球标准时间的一致性。 至于天气信息,通常需要调用第三方天气API。注册并获取API密钥,然后在ESP8266上使用HTTP库(如ESP8266HTTPClient)发起GET请求到天气API的URL,带上必要的参数(如地理位置信息)。API返回的JSON数据可以解析得到天气信息,如温度、湿度、风速等,这些信息可以进一步展示在设备的显示屏上,或者通过MQTT发送到其他系统进行处理。 总结来说,实现ESP8266通过MQTT连接阿里云平台并完成数据交互,需要完成以下步骤: 1. 在阿里云物联网平台上注册产品和设备,获取设备密钥。 2. 配置ESP8266连接到Wi-Fi网络。 3. 使用MQTT库建立与阿里云的连接,订阅和发布主题。 4. 实现数据上传,包括传感器读取和数据封装。 5. 处理数据下载,解析接收到的MQTT消息。 6. 通过NTP协议同步时间。 7. 调用天气API获取实时天气信息,并进行数据解析。 通过以上步骤,我们可以构建一个基本的物联网系统,使ESP8266成为一个能够与云端互动、获取实时信息的智能设备。这个过程中涉及的编程语言通常是C++(Arduino)或Python,而具体实现方式可能因所选开发环境和个人需求有所不同。
2024-09-29 17:02:46 5KB 阿里云
1
STM32F103通过串口2跟ESP8266相连。 1、连接阿里云aliyun物联网平台,主动上报本地数据到平台端。 2、通过MQTT协议通讯,接收平台端下发的控制指令并动作。 3、支持阿里云iot studio平台开发WEB端。 4、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32F103其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。 5、软件下载时,请注意keil选择项是jlink还是stlink. 6、硬件设计、软件开发、数据联网:349014857@qq.com;
2024-09-29 16:57:28 6.95MB ESP8266 IOTSTUDIO 物联网云平台 手机APP
1
C#联合halcon源码 CAD测量比对 CAD图纸 测量 海康相机 通常测量规则的物体,通过找边,找圆,求线线交点,点到线的距离,很容易测量尺寸。 这个源码的测量物体是不规则的,很多凸凹的地方都需要测量,这里我们采用的导入CAD标准的轮廓,与相机采集的图片进行轮廓比对,计算最大尺寸的方式来测量。 在产品轮廓非常复杂的情况下,这样的方法可以解决问题 客户需求:计算该型材的所有边缘与要求尺寸的偏差,看是否在合理范围内。 这里我们采用了客户提供的标准的CAD图纸,与相机采集的图片进行轮廓对比,最终得到的实际尺寸。 提供:halcon源码,C#联合halcon源码,CAD图纸,相机安装包,相机SDK 参数设置:可以导入CAD图纸,旋转CAD图纸,创建模板,保存模板,图片缩放,halcon引擎等操 该段话涉及到的C#编程语言、Halcon图像处理库、CAD图纸、测量、相机、轮廓比对、尺寸偏差。 延伸科普: 1. C#编程语言:C#是一种面向对象的编程语言,常用于开发Windows应用程序、Web应用程序和游戏开发等领域。它具有丰富的库和框架,可以方便地进行软件开发和编程。 2. Halc
2024-09-19 21:59:17 223KB
1
第二章 摄像测量学基本原理和算法 2.1 摄像测量常用成像模型 摄像测量是通过对摄像成像系统拍摄的图像进行分析计算,测量出被测物体在三维 空间中的几何参数和运动参数的一种测量手段。拍摄的图像是空间物体通过成像系统在 像平面上的反映,即三维空间物体在像平面上的投影。数字图像每个像素的灰度反映了 空间物体表面对应点的光强度,而该点的图像位置对应于空间物体表面的几何位置。实 际物体位置与其在图像上的位置的相互对应关系,由成像系统的几何投影模型或称成像 模型所决定,如图 2.1。成像模型是摄像测量学的 重要基础之一。各种摄像测量任务中, 都是基于成像映射关系,确定各种几何与运动参数。 图 2.1 实物到图像通过成像模型的映射关系 摄像成像过程是从三维空间向二维空间(图像)的映射。这种从高维空间向较低维 空间的映射关系就是投影。下面简要介绍几种在摄像测量中常用的投影和成像模型。 2.1.1 常用投影模型 投影时,用一组假想的直线(光线)将物体向几何表面上进行投射。该几何表面称 为投影平面,这组假想直线称为投影线(或投射线),投影平面上得到的图像也称为投影。 在摄像测量学中,按投射方式的不同,常用的投影模型主要有以下三种。 1) 中心投影 投射线会聚于一点的投影称为中心投影。如图 2.1.1(a)所示,投射线的会聚点 S 称为 投影中心,P 平面为投影面,SaA,SbB 等为投射线。A、B、C、D 为物点,a、b、c、d 称为投影点。摄像机、照相机等成像设备的成像规律近似满足中心投影。 2) 平行投影 投射线相互平行的投影称为平行投影。如图 2.1.1(b)所示,平行投影可以认为是投影 中心在无穷远处的中心投影。在平行投影中,若投影线垂直于投影平面,称这种投影为 正投影或正射投影。地形图就属于正射投影。 3) 双心投影 实体 成像 模型 图像
2024-09-15 20:59:51 4.46MB 图像测量
1
在本文中,我们将深入探讨如何使用STM32F407微控制器通过GPIO模拟SPI时序来读取MAX32865传感器的温度数据。STM32F407是一款基于ARM Cortex-M4内核的高性能微控制器,广泛应用于各种嵌入式系统设计。而MAX31865则是一款集成的热电偶冷端补偿器和数字温度转换器,适用于精准测量温度。 我们需要了解SPI(Serial Peripheral Interface)通信协议。SPI是一种同步串行接口,通常用于连接微控制器与外围设备,如传感器、存储器等。在SPI通信中,主设备(这里是STM32F407)控制时钟线(SCLK),并可以通过数据线MOSI和MISO与从设备(MAX32865)交换数据。此外,还有一个片选线(SS或CS),用于选择和断开与特定从设备的通信。 在STM32F407中,我们可以配置GPIO引脚作为SPI模式,但在这个项目中,由于硬件限制或者设计需求,我们将使用GPIO模拟SPI时序。这意味着我们需要通过编程精确控制PB3、PB4和PB4这三个GPIO引脚来实现SPI通信。PB3将作为SCLK,PB4将作为MOSI,而另一个PB4可能用于模拟CS信号。 以下是一些关键步骤: 1. 初始化GPIO:设置PB3、PB4和PB4为推挽输出,并设定适当的上拉/下拉电阻,以防止在通信期间出现不确定的信号状态。 2. 设置时钟:配置RCC(Reset and Clock Control)寄存器,确保GPIO和系统时钟工作正常。 3. 模拟SPI时序:编写函数或中断服务程序,按照SPI协议的时序要求控制GPIO引脚的状态。这包括SCLK的上升沿和下降沿,以及MOSI和CS信号的切换。 4. 发送命令和接收数据:根据MAX32865的数据手册,构造正确的SPI命令字节,通过GPIO模拟SPI发送到从设备。同时,根据SPI协议,你需要在MISO线上接收返回的数据。 5. 读取温度:MAX32865会根据接收到的命令执行相应的操作,如读取温度传感器的值。在完成操作后,它会在MISO线上返回结果。读取这些数据并进行解析,可以得到实际的温度值。 6. 冷端补偿:MAX32865集成了冷端补偿功能,可以消除环境温度对热电偶测量的影响。你需要正确处理返回的温度数据,以获取真实的被测温度。 7. 错误处理:在读取和处理数据时,应检查CRC校验或其他错误检测机制,确保数据的准确性。 总结来说,通过GPIO模拟SPI通信需要对STM32F407的GPIO功能和SPI协议有深入理解,同时需要熟悉MAX32865的特性。这种做法虽然比直接使用硬件SPI接口更为复杂,但在某些情况下可以提供更大的灵活性,例如在资源有限或硬件不支持SPI的场合。通过实践,你可以掌握这个过程,并为未来的嵌入式系统设计打下坚实基础。
2024-09-11 14:21:56 929KB stm32
1
STM32 SPI(Serial Peripheral Interface)是一种常见的串行通信接口,广泛应用于嵌入式系统中,用于连接并控制各种外设,如传感器、LCD显示屏、闪存等。在这个例程中,我们将深入探讨STM32如何配置和使用SPI进行通信,并提供实际验证过的代码示例。 1. **SPI工作原理**: SPI接口采用主-从架构,由一个主机(Master)驱动一个或多个从机(Slave)。通信时,主机发出时钟信号,从机根据时钟信号发送和接收数据。SPI有四种工作模式(CPOL和CPHA的组合),主要区别在于数据是在时钟脉冲的上升沿还是下降沿被采样,以及在哪个时钟周期数据有效。 2. **STM32 SPI初始化**: 在STM32中,SPI的初始化涉及以下步骤: - 选择SPI时钟源:通常使用APB1或APB2时钟,根据具体需求调整预分频器。 - 配置GPIO:SPI引脚需设置为推挽输出或开漏输出,并启用上拉/下拉电阻,根据应用选择合适的速度。 - 选择SPI模式:设置CPOL和CPHA参数。 - 设置波特率:通过配置SPI的预分频器和分频因子。 - 使能SPI总线和中断,如果需要的话。 3. **SPI传输数据**: STM32提供了多种方式发送和接收SPI数据,如SPI_Transmit、SPI_Receive、SPI_SendReceive等函数。在传输过程中,主机可以同时读取从机返回的数据,实现全双工通信。 4. **SPI中断处理**: 为了提高实时性,可以使用中断处理SPI通信完成事件。当传输结束时,SPI状态寄存器中的相关标志位会被置位,通过检测这些标志可以触发中断服务程序。 5. **SPI实例代码**: 以下是一个简单的STM32 SPI主设备发送数据到从设备的示例: ```c void SPI_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; // 配置GPIO RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置SPI RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI2, &SPI_InitStructure); SPI_Cmd(SPI2, ENABLE); } void SPI_Transmit(uint8_t data) { while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET); SPI_I2S_SendData(SPI2, data); while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_BSY) == SET); } ``` 这段代码首先初始化GPIO和SPI2,然后定义了一个SPI_Transmit函数用于发送单个字节数据。注意在发送数据前要确保TXE(传输空)标志为低,表示SPI传输缓冲区已准备好接收新数据;在发送完成后,等待BSY(忙)标志变为低,表示传输已完成。 6. **调试与测试**: 在实际应用中,可能需要使用示波器检查SPI时钟和数据线上的信号,或者连接一个兼容的SPI从设备进行通信测试。确保时序正确,数据无误。 7. **注意事项**: - SPI通信可能会与其他外设冲突,确保正确设置NSS(片选)信号,避免不必要的选通。 - 检查电源和地线布局,确保信号质量。 - 在多设备环境中,正确配置SPI设备的地址或选择线。 这个STM32 SPI例程经过了实际测试,证明其功能是可靠的。你可以将这段代码作为基础,根据自己的硬件配置和应用需求进行修改和扩展,以满足不同的项目需求。
2024-09-02 13:42:46 2KB stm32 spi
1
C#串口通讯的类(通过API调用) 在本篇文章中,我们将讨论如何使用C#语言来实现串口通讯,通过调用Windows API来控制串口的操作。 我们需要了解串口通讯的基本概念。串口通讯是计算机与外部设备之间的一种通信方式,通过串口可以实现数据的传输。串口通讯可以分为两种方式:同步通讯和异步通讯。同步通讯是指在主机和从机之间的通讯过程中,主机和从机同时进行数据传输的方式。异步通讯是指在主机和从机之间的通讯过程中,主机和从机不同时进行数据传输的方式。 在C#语言中,我们可以使用System.Runtime.InteropServices命名空间中的DllImportAttribute来调用Windows API。通过调用CreateFile方法,我们可以打开串口,并获取串口的文件句柄。然后,我们可以使用ReadFile和WriteFile方法来读取和写入串口。 现在,让我们来看一下 CommPort 类的实现。 CommPort 类是一个串口通讯的类,通过调用API来控制串口的操作。该类具有以下成员变量: * PortNum:串口号 * BaudRate:波特率 * ByteSize:数据位数 * Parity:奇偶校验位 * StopBits:停止位 * ReadTimeout:读取超时时间 CommPort 类还具有以下方法: * Open:打开串口 * Close:关闭串口 * Read:读取串口数据 * Write:写入串口数据 在 CommPort 类中,我们使用了DCB结构体来存储串口的配置信息。DCB结构体具有以下成员变量: * DCBlength:DCB结构体的长度 * BaudRate:波特率 * fBinary:二进制模式 * fParity:奇偶校验 * fOutxCtsFlow:CTS输出流控制 * fOutxDsrFlow:DSR输出流控制 * fDtrControl:DTR流控制 * fDsrSensitivity:DSR敏感度 * fTXContinueOnXoff:XOFF继续发送 通过使用 CommPort 类,我们可以轻松地实现串口通讯,并控制串口的操作。 在实际应用中,我们可以使用 CommPort 类来实现各种串口通讯的应用,例如数据采集、机器人控制、工业自动化等等。 通过使用C#语言和Windows API,我们可以轻松地实现串口通讯,并控制串口的操作。
2024-08-31 21:19:48 44KB
1
基于AUC的特征选择是一种用于机器学习中降维和提高模型泛化能力的方法。AUC(Area Under Curve,ROC曲线下的面积)是评估分类模型性能的重要指标,尤其在样本不平衡的情况下表现更加稳定。传统的特征选择方法往往关注单个特征的好坏,而忽视了特征间的互补性,即不同特征之间如何协同工作共同提高分类性能。 ANNC(Maximizing Nearest Neighbor Complementarity)是一种新颖的特征选择方法,它在AUC的基础上,通过考虑最近邻的互补性来提高特征选择的效率。这种方法不仅关注最近邻错分类信息(nearest misses),也考虑最近邻正分类信息(nearest hits),从而全面评价特征对之间的互补性。互补性意味着某些特征在组合中相互增强,通过相互协作能达到更佳的分类效果。 在ANNC方法中,最近邻的计算是在特征空间的不同维度上进行的,以此来评估特征之间的互补性。这种方法的优势在于它提供了一种新颖的方式来判断在另一个特征的辅助下,一个特征的区分度如何。然而,邻域信息通常对噪声很敏感,仅仅考虑一侧的信息(如最近邻错分类)可能会忽视正分类对特征互补性的影响。 ANNC方法的核心在于将这种局部学习基于的互补性评价策略整合到基于AUC的特征选择框架中,从而全面评价特征对之间的互补性。这样做有助于捕捉那些能够相互协作、共同提升识别性能的互补特征。 本文作者提出了ANNC这一算法,并在公开的基准数据集上进行了广泛的实验,以多种度量标准验证了新方法的有效性。实验结果表明,在不同的数据集和各种度量指标下,ANNC方法都显示出显著的性能提升。 ANNC方法不仅考虑了每个特征本身的特性,而且结合了特征之间的相互作用,从而提供了一种更为全面的特征选择策略。这对于复杂的学习场景,如文本分类、图像检索、疾病诊断等,都有着极其重要的意义。由于这些场景下的样本通常由大量的特征来描述,因此找到一个有效的特征子集,对于提高分类器性能和模型的可解释性至关重要。 ANNC的研究论文强调了特征互补性在提高分类性能方面的重要性,并通过实际的实验验证了这一点。特征互补性的概念可以推广到不同的机器学习任务中,而不仅仅是特征选择。在特征工程领域,了解特征之间的关系有助于构建更加强大和鲁棒的机器学习模型。因此,ANNC的贡献不仅限于其作为一个新的特征选择算法,更在于它为我们理解特征相互作用提供了一种新的视角。
2024-08-29 13:36:06 767KB 研究论文
1