jn10010537
2024年,C#/C++
展开
-
【专栏介绍 C/C++/Python应用开发】
【专栏提纲 ID_01】C/C++/Python混合编程背景Table of Contents背景更新时间:2020.12.05;更新版本:第一版;写作时间:准备抽周末以及平时下班的业余时间上,将这个专栏写的质量尽可能的高一些。写作方式:先拟好提纲,然后逐步的完善。保持一周至少一篇的进度。写作范围:前期涉及的是开发相关的(python全栈开发以及图像应用算法落地),后期会逐渐添加算法相关的内容;面向人群:学生,以及方案解决的同仁等。备注:并不能做到尽善尽美,但是追求完美,愿与志同道合的诸君,原创 2020-12-05 11:32:59 · 1205 阅读 · 1 评论 -
【应用开发】 RS232C串口通信传输错误指令的问题分析以及解决方案
RS-232C通常用于短距离、低速的数据传输,例如在计算机与调制解调器、打印机、工业设备之间的通信。上位机软件发送串口指令,要求下位机必须在0.5秒内返回正确的指令内容,否则上位机关闭串口连接。在公司测试的时候未出现上位机断连的情况,到客户那里经常出现,设备返回公司进行原因分析。RS-232C是一种常见的串行通信硬件标准,用于在计算机和外围设备之间进行数据传输。上位机通过串口传输的指令错误(比如,上位机发的1010,实际串口输出的是1100)!串口的硬件是支持RS232C,软件协议是自定义的。原创 2024-08-14 10:36:08 · 82 阅读 · 0 评论 -
【python中级】串口发送ASCII字符以及十六进制字符
无论你在代码中使用的是ASCII字符、十六进制表示,还是其他格式,这些都需要最终转换为字节数据才能通过串口发送。从上可以看到ASCII字符串直接编码encode(‘ascii’),速度快一丢丢,实际工作中忽略不计这种优势;串口通信通常发送和接收的是字节数据,也就是二进制数据(0,1 两种状态)。分别发送ASCII字符串和Hex字符串,并比较转化字节码的速度。串口发送ASCII字符或者发送16进制数据对应的字符串。字符串可以通过编码为字节形式后发送。串口监控在工作中会经常需要使用,原创 2024-08-13 12:14:59 · 45 阅读 · 0 评论 -
【python中级】 pyinstaller打包可执行程序的说明
通常使用pyinstaller打包程序可以简单总结如下,基本够平时应用。backEnd_Main.py为需要打包的脚本。常用的参数用法:-w: 指定生成 GUI 软件,也就是运行时不打开控制台-c: 运行时打开控制台-i : 指定打包后可执行文件的图标–clean: 在构建之前清理PyInstaller缓存并删除临时文件–add-data:如果你的程序依赖于其他文件(如数据文件、配置文件等),该选项将这些文件包含在可执行文件中。原创 2024-07-26 23:55:14 · 58 阅读 · 0 评论 -
【python中级】图像从笛卡尔坐标系转换为极坐标系
在对数极坐标变换中,径向距离 r 是对笛卡尔坐标系中的距离取对数的结果:(这里log即 lg:10为底的对数,叫作常用对数。对数极坐标变换,则更适用于需要处理大尺度变化的图像,例如在某些图像稳定、旋转不变性特征提取和目标跟踪等高级应用中。线性极坐标变换,适用于需要保持图像原始比例和距离关系的情况,例如在图像处理和计算机视觉中的一些基本应用。这种变换保持了距离的线性关系,也就是说,离原点越远的点在极坐标系中的径向距离越大。这种变换压缩了较远距离的点,使得远离原点的点在极坐标系中的径向距离变小。原创 2024-07-07 14:49:07 · 377 阅读 · 0 评论 -
【python中级】 试用nuitka打包PySide6应用程序
Nuitka2.1,Python 3.11.9(安装包:python-3.11.9-amd64.exe)Nuitka这个打包工具,参数实在是太多,后续再慢慢研究。本博客GUI框架采用的是PySide6。安装 PySide6版本:6.7.0。亲测,打包后的可执行程序可以运行。如果觉得毫无必要,请君跳过。原创 2024-04-28 21:15:25 · 169 阅读 · 1 评论 -
【python中级】安装nuitka依赖的gcc编译器
如果您的计算机无法下载winlibs-x86_64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64msvcrt-11.0.1-r1.zip;那么这个您可以手动下载本博客资源,然后将其拷贝到提示的目录下即可,再次执行Nuitka --version 即可。请注意,gcc保存在提示的目录下。原创 2024-04-20 16:19:35 · 251 阅读 · 0 评论 -
【python中级】安装nuitka打包工具
Nuitka 是一个用于将 Python 代码编译成 C 或 C++ 代码的工具。可以把nuitka看成它是一个优化的 Python 编译器,Nuitka 的工作原理是将 Python 代码转换成等效的 C 或 C++ 代码,然后使用 C 或 C++ 编译器将其编译成本地可执行文件。编译完的可执行文件,提高了代码的执行速度,避免了 Python 解释器的开销,特别是对于一些性能敏感的应用程序。原创 2024-04-20 15:15:15 · 569 阅读 · 1 评论 -
【python中级】将字符串按照固定长度分割
创建 ui_indicatePic.py文本,把base64编码图片后的字符串赋值给indicatePic_2_base64_utf8。由于这个图片我经常审美上要进行修改,然后每次base64编码图片后的字符串其实是非常非常长的字符串。使用re模块的findall函数,分割字符串(包含任意字符)。方法是利用re模块的findall函数,分割字符串。为了美观,我需要手动的回车回车来形成上图的效果!原创 2023-07-26 00:43:29 · 1001 阅读 · 0 评论 -
【python中级】 base64编码将图片数据转化为成字符串
Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。Base64 常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括 MIME 的电子邮件及 XML 的一些复杂数据。图片的 BASE64 编码就是可以将一幅图片数据编码成一串字符串,使用该字符串代替图片地址,从而不需要使用图片的 URL 地址。原创 2023-07-24 19:55:28 · 2168 阅读 · 0 评论 -
【CPP应用】测试CPU架构是大端还是小端模式
union是一个联合体,所有变量共享一块内存,内存是按变量最大所需要的字节数来开辟存储地址空间。本博客利用CPP的union的特性,来判断CPU架构是大端字节序还是小端字节序。在接收主机再将网络字节序的数据转换成本主机的字节序,这样就可以正确的解析数据。理由2,然后是高地址按习惯存高字节,低位值在内存中放地址低位,这很合理!大端模式、小端模式是字节序里面的概念,即大端字节序,小端字节序。这样就发现似乎大端字节序才是习惯中的王者风范,您的最爱。理由1,首先你把地址从左至右,按照高地址到低地址排列。原创 2023-07-24 00:39:43 · 244 阅读 · 0 评论 -
【C应用】测试CPU架构是大端还是小端模式
对应的地址是0x100-0x103,在大端字节序的PC上的内存存储顺序是0x12345678,在小端PC上是0x78564312。大端模式、小端模式是字节序里面的概念,即大端字节序,小端字节序。所谓大端(大端字节序)就是指高位值在内存中放低位地址,所谓小端(小端字节序)是指低位值在内存中放低位地址。使用C语言代码检测x86架构CPU的字节序模式。程序运行检测出是小端字节序模式。比如0x12 34 56 78。原创 2023-07-23 22:31:48 · 488 阅读 · 0 评论 -
【应用开发】关于字节序的理解
低位的值小,高位值大。在计算机系统中,以字节为单位的,每个地址单元都对应着一个字节(8bit),这些字节里存储了数据,而这些字节的排序就有可能不同,比如两个字节的数据,他们会有两种顺序!字节序,即多字节在电脑内存中存放时的序列 与 输入(输出)时的字节序列 是按照字节先到的在前还是后到的在前,如果先到在前则为小端序,否则为大端序。对于小端字节序,地址的增长顺序与值的增长顺序相同,低位字节是0x37、0x23,高位字节0x05,0x20。注意:高位字节是0x20、0x05,低位字节0x23、0x37。原创 2023-07-23 17:30:22 · 257 阅读 · 0 评论 -
【python中级】MODBUS-RTU通信协议的CRC16循环冗余码校验
另外,特别注意:MODBUS通讯中使用的格式为:LSB-MSB格式(低字节在前,高字节在后)。接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通讯出现错误。它是利用除法及余数的原理来作错误侦测(Error Detecting)的。但实际在行业内,规定了各种数据格式生成多项式的国际常用的CRC参数模型。CRC校验,理论上生成多项式G(x)和校验的数据长度n是任意的!),简称CRC16。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,原创 2023-07-14 21:55:04 · 1140 阅读 · 0 评论 -
【python中级】将10进制数转化为指定字节长度的16进制字符串
比如在电压电流的设置的时候,发送的串口指令,就经常需要将10进制的数转化为指定长度的16进制字符串。在上位机开发的过程中,经常需要发送串口指令,其中串口指令经常需要生成。一般的长度是2个字节或者1个字节。原创 2023-07-13 18:34:01 · 598 阅读 · 0 评论 -
【python中级】将串口通信的字节码转换为16进制的字符串
通信协议就有Modbus-RTU、Modbus-ASCII以及从站设备厂自定义的协议。关键是使用python内置方法hex()实现!通过python的pyserial 三方包来进行串口数据通信。注意:您需要有一个从站和串口号(从站和串口号都可以模拟)一般工业里我用的比较多的是RS232-C通信总线,这种的bytes字节码类型的数据,可阅读性比较差,在开发上位机程序的过程中,经常会用到串口通信。通过串口传输的数据,一般都是字节码。将字节码转化为16进制的字符串更方便阅读。原创 2023-07-05 12:04:38 · 775 阅读 · 0 评论 -
PyQt5 menu菜单栏设置
PyQt5 版本:5.11.3PyQt5 menu设置# -*- coding: utf-8 -*-'''@author yys'''import sysfrom PyQt5.QtWidgets import QMainWindow, QApplication,QAction,QMenufrom PyQt5.QtGui import QIcon,QCursorclas...原创 2019-10-12 12:20:32 · 5822 阅读 · 4 评论 -
【PyQt5】指示灯显示
假设label标签的大小为60px*60px,对应的border-radius: 30px。我们本质是用Qt5的label文本标签来实现的,即通过设置标签的样式表来实现的。利用Qt5写工业控制软件交互界面的时候,经常需要在界面上有指示灯功能。step-2、设置Label标签的geometry几何的宽度和高度,step-1、在画布上拉一个TextLabel标签。例如下面的明暗表示串行端口的连接和断开。通过Qt设计师绘制指示灯的大致步骤如下。python3的代码示例如下。step-3、编辑样式表,原创 2023-05-28 22:51:06 · 2038 阅读 · 0 评论 -
【应用开发】关于ASCII码的进制对照表
在英语中,用128个符号编码便可以表示所有,但是用来表示其他语言,128个符号是不够的。ASCII(American Standard Code for Information Interchange美国信息交换标准代码),是基于拉丁字母的一套电脑编码,作为国际通用的信息交换标准代码。如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;十进制32~126(共95个)是字符(32是空格),其中十进制48~57为0到9十个阿拉伯数字。如“A”原创 2022-12-11 08:20:42 · 851 阅读 · 0 评论 -
【应用开发】关于串口和通信协议
他们的区别就是电气标准不一样,即RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及物理形态、电缆或传输的通信协议。串口是一个物理层面的电器电口,他是看得见摸得着的,但并没有固定的样式。还有其他别的串口本文不介绍,其实本文就说,RS232、RS485是工业设备通信常用的电器接口,RS232、RS485是串口中的一种。以下是9 针D 形连接器,通常是RS232、RS485的接口,但RS232、RS485串口的物理形态是不固定的。串口它规定了接口的电气标准,即它只是物理层的一个标准。原创 2022-12-10 18:46:25 · 852 阅读 · 0 评论 -
【python中级】强行kill杀掉进程
如果程序涉及到主进程开子进程,并在一定条件下关闭子进程。可在windows以及linux下杀掉进程。以下示例代码 “kill杀掉进程.py”大概率就是需要kill杀掉进程。原创 2022-11-18 16:28:43 · 3025 阅读 · 0 评论 -
【python中级】裁剪1、2寸电子照片
这个300dpi不是瞎来的,参考了人眼能分辨出的最大分辨率是300dpi,超过这个分辨率,人的眼睛是无法看出差别的,也就是说 300dpi和600dpi在人眼看来是没有差别的,异能人不再抬杠范围。DPI是分辨率的一种,即设备分辨率,也称为输出分辨率,是指各种类型的输出设备可以产生的每英寸点数,例如监视器,喷墨打印机 ,激光打印机,绘图仪的分辨率,此分辨率由DPI测量。现在的冲印设备最大的设计输出分辨率,就是300dpi,对于大尺寸比如6寸,一般来说能达到200dpi,肉眼看到就很清晰了!原创 2022-11-18 00:30:46 · 814 阅读 · 0 评论 -
【python中级】Pillow包在图像中绘制中文
目前使用python语言还不能在图像中高效率的绘制中文,可以对比,使用Pillow包绘制中文可能达到20ms,同等配置下使用opencv绘制英文不到0.1ms,差别还是很大的。目标检测类项目一些场景需要在界面上绘制文字信息,而中文的显示需求很大。所以后面会考虑将c++支持图像绘制中文的源码打包编译并开源贡献出来。opencv-python到目前为止,还不支持在图像中绘制中文。以下脚本使用Pillow三方包实现在图像上绘制中文。在算法绘制的直播推流业务场景。原创 2022-11-12 23:38:19 · 838 阅读 · 0 评论 -
【AI技术】物体识别概述1
物体识别的主要研究内容是对图像进行特征描述,通常采用深度学习技术对整个图像进行特征学习,这些特征作为是否存在某类物体的判断依据。例如,对图像进行简单的正常异常的分类。注意:图像分类适用于实际环境很相对简单的场景,且被分类的主体在图片中占比较大,则最后的模型泛化能力将更强。识别一张图中是否是某类物体/状态/场景,适用于图片内容单一、需要给整张图片分类的场景。物体识别又叫物体分类,通常也称为图像分类,即对整张图片进行分类。物体识别针对的是物体分类任务,要解决是图片中是否包含某类物体。原创 2022-09-12 22:42:13 · 2387 阅读 · 0 评论 -
【python中级】linux系统获得计算机网卡流量
在计算机使用onvif抓图以及rtsp推拉流的时候,我们希望知道当前计算机的网卡流量。因为我们带宽是有限的,当计算机的实时的数据传输量过大,就会导致基于网络处理的不稳定!基于/proc文件系统,具体是基于内核网卡信息文件: /proc/net/dev/proc/net/dev 这个文件存储了主机上的网络数据,提供给用户读取其统计信息的途径。原创 2022-09-03 20:56:17 · 1000 阅读 · 0 评论 -
【python中级】func_timeout程序超时处理
在linux系统下使用timeout_decorator装饰器进行程序超时中断处理。本博客使用func_timeout 三方包,能兼容windows和linux系统。【python中级】linux下timeout_decorator程序超时处理。当define_timeout 设置成0.6时,程序正常运行,并返回结果5;通过pip安装:pip install func_timeout。...原创 2022-08-31 00:02:25 · 1662 阅读 · 0 评论 -
【python中级】linux下timeout_decorator程序超时处理
在需要设置定时任务的函数前添加@timeout_decorator.timeout(seconds),解决办法:在python程序任务的前方引入超时的装饰器,使得超过指定时间之后自动退出函数执行。在我们执行位置循环的程序或者网络请求的程序的时候,可能会出现超预期的时间等待。当define_timeout 设置成2.01时,程序正常运行,并返回结果5;timeout-decorator模块采用装饰器的形式来进行调用。seconds即对应的秒数,即该秒数后函数会停止运行并报错。...原创 2022-08-30 19:10:51 · 945 阅读 · 0 评论 -
【python中级】根据子网掩码位数生成子网掩码
例如二进制形式的子网掩码:1111 1111、1111 1111、1111 1111、0000 0000,1是用于屏蔽IP地址的一部分,以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。子网掩码是一个32bit位(8字节)地址,形如,是与IP地址结合使用的一种技术。那么意味着需要通过子网掩码的设置,让更多的IPC划分到同一个网段。在IPC智能改造的项目中,往往需要对IPC的网段进行修改。...原创 2022-08-28 14:04:54 · 960 阅读 · 0 评论 -
【python中级】获得计算机的物理CPU核心数量
需要注意,一个核不一定只有一个CPU线程,得益于超线程技术的发展,通过特殊的硬件指令将一个物理CPU内核模拟成两个逻辑核心来使用,在处理多线程任务时候(区别于python伪多线程),实现数据的并行处理,是的CPU物理性能发挥彻底。CPU的位数:处理器能够一次性计算的浮点数的位数,通常情况下,CPU的位数越高,CPU 进行运算时候的速度就会变得越快。CPU是计算机的核心配件,影响其性能的指标主要有主频、 CPU的位数、CPU的缓存指令集、CPU核心数和IPC(每周期指令数)。...原创 2022-08-28 03:08:47 · 935 阅读 · 0 评论 -
【微服务】Gunicorn进程管理
在管理 worker 上,使用了 pre-fork 模型,即一个 master 进程管理多个 worker 进程,所有请求和响应均由 Worker 处理。如果 worker 挂了,发出 CHLD, 则重启失败的 worker, 同步的 Worker 一次处理一个请求。简单来说就是:gunicorn擅长于管理多进程,worker进程挂了自启,还可以动态调整 worker的数量,请求多的时候增加 worker 的数量,请求少的时候减少worker 的数量。内建的服务器名称可以看出不太适合高并发的生产环境。...原创 2022-08-15 04:57:19 · 383 阅读 · 0 评论 -
【微服务】Gunicorn服务器替换Flask自带的WSGI Server服务器
本博客介绍的是Gunicorn 服务器作为wsgi app的容器,即Gunicorn服务器替换Flask自带的WSGI Server服务器!原创 2022-08-13 17:44:50 · 699 阅读 · 0 评论 -
【微服务】关于WSGI Server即web服务器
当然性能都不好,自带的 web server 更多的是测试用途,发布时则使用生产环境的 Wsgi server或者是联合 Nginx 做 uwsgi。Wsgi 是作为 Web 服务器与 Web 应用程序或应用框架之间的一种低级别的接口,以提升可移植 Web 应用开发的共同点。WSGI是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。WSGI将web组件分为三类:web服务器(Wsgi server),web中间件,web应用程序。...原创 2022-08-13 09:10:45 · 868 阅读 · 0 评论 -
【flask】服务端获取客户端请求的文件
boundary=f009a2f3a61c7d95a51347294f96fb4e。先执行http_service.py脚本,然后执行http_client.py脚本,本博客涉及request的属性headers、files、form。本博客介绍request的属性headers、files、form。上传image_file本地图片文件,涉及服务端获取客户端请求的文件。对于Web应用,客户端与服务器的之间的数据交互至关重要。MultiDict一键多值字典。其他的属性,在用到的时候再介绍。...原创 2022-07-26 22:34:22 · 617 阅读 · 0 评论 -
【python中级】 python内置uuid包生成通用唯一识别码UUID
UUID,全称UniversallyUniqueIdentifier,即通用唯一识别码,是一种软件建构的标准。它的目的在于让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要中央控制端做辨识信息的制定。相比uuid.uuid3(),通过计算命名空间和名字的SHA-1散列值来生成UUID。注意uuid.UUID参数的字符串长度为32位,不能多不能少,其中’-'忽略。通过随机数来生成UUID.使用的是伪随机数有一定的重复概率.Python中内置了一个名为uuid包来处理UUID的生成。...原创 2022-07-25 22:19:52 · 647 阅读 · 0 评论 -
【flask】服务端获取客户端的请求头信息
首先执行pythonhttp_service.py脚本,然后在执行pythonhttp_client.py脚本。基于flask框架的http服务器,经常需要捕获客户端的请求头中的字段数据,来做校验。原创 2022-07-25 19:33:55 · 1190 阅读 · 0 评论 -
【python中级】 FastDFS列出一个指定组名的group信息
本博客涉及Fdfs_client类中的方法list_one_group。在client.py脚本中定义了classFdfs_client。从fastdfs文件服务器上获取某一个指定组名的group分组信息。fastdfs版本py3Fdfs==2.2.0。本博客用于监控某一组group的信息。......原创 2022-07-24 17:01:06 · 565 阅读 · 0 评论 -
【python中级】 FastDFS列出所有groups分组信息
2.2、FastDFS充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群。group分组group分组是fastdfs应对大流量应用系统中处理高并发、高容灾的经典设计,并且group还起到了应用隔离的功能。2.1、fastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,解决了大容量存储和负载均衡的问题。2.3、fastdfs单体的组成一个tracker、一个storage、一个group。......原创 2022-07-24 16:27:25 · 487 阅读 · 0 评论 -
【python中级】图片数组转化为二进制的字节码图像数据
使用了opencv-python三方包中的cv2.imencode()本博客相反,将图片数组转化为二进制字节码数据。主要用于图像数据格式的压缩,方便网络传输。原创 2022-07-24 12:45:38 · 879 阅读 · 0 评论 -
【python中级】二进制的字节码图像数据转化为图像数组
接口1numpy.frombuffer(buffer,dtype=float,count=-1,offset=0)本博客介绍如何将字节码,形如b’\xff\xd8\…\x94\x1f\xff\xd9’转化为图片数组。接口2imdecode(buf,flags)从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;本博客非常适用从网络请求的图片二进制字节码转化为图片数据。即opencv处理的图片数据是numpy图片数组。通过open读取图片文件,转为图片数组,然后显示。...原创 2022-07-24 11:36:30 · 2258 阅读 · 0 评论 -
【python中级】 FastDFS下载文件到buffer缓存
本博客涉及Fdfs_client类中的方法download_to_buffer。在client.py脚本中定义了classFdfs_client。(版本py3Fdfs2.2.0)从fastdfs服务器下载图片文件到本地内存之中,并使用opencv读取内存中的数据。原创 2022-07-23 22:05:22 · 476 阅读 · 0 评论