- 博客(243)
- 资源 (3)
- 收藏
- 关注
原创 使用zbar解码一维码
后来尝试了一下zbar,发现可以解码。之前都是直接用zxing来解码一维码的,但是今天遇到了一个看起来很清晰的一维码,但是zxing死活解码不了的情况。我们选用mchehab/zbar,但是不是直接下载它的源码来编译,因为会很麻烦。我的电脑编译了一个小时,不过时间主要是花在编译其依赖的第三方库。这个zbar的原始作者已经在2012年停止维护了,但是有个项目继承了,在此处。但是有个问题,不知道为啥,识别不出二维码。编译好后,在pro文件中引入头文件和库文件,就可以顺利使用了。,貌似持续做了不少更新。
2025-04-03 13:50:59
157
原创 在Qt中判断输入的js脚本是否只包含函数
目前在使用QtScriptEngine,在利用evaluate注册子函数时,要求用户输入的js文件中的内容仅仅是函数,函数体外,不能出现一些变量的声明、函数的调用等其他代码。
2025-03-29 11:39:19
322
原创 Qt程序基于共享内存读写CodeSys的变量
但是,在实际的项目中,要到使用到的结构体往往是多种类型的结构体互相嵌套的结果。假如我们和PLC的通讯只是简单的一个结构体,结构体中都是一些POD(Plain Old Data),那可以直接和PLC程序编写人员协商沟通好,让他把结构的定义代码发给你,你再根据ST代码写出结构体的C++代码。要想将Application的结构体数据直接导出,貌似是不行的,但是可以先把结构体数据复制到一个Library工程,然后导出m4文件,最后利用python脚本翻译(处理)成我们需要的代码。
2025-03-15 14:37:05
909
原创 基于RTTR在C++中实现结构体数据的多层级动态读写
如此一来,在c++中,使用字符串来定位+读写结构体成员数据的操作就实现了。这个只是基础,如何发挥它真正强大威力,等下一篇再介绍了。预告一下,主要是用共享内存来实现进程间读写PLC变量的。参考【C++笔记-RTTR编译&安装&简单使用】
2025-03-14 14:00:28
833
原创 Linux系统下设置程序的CPU亲缘性及线程测试
我写了个程序来测试,指定此程序只在核1上运行。从top指令的结果可以看到,程序的确只在核1上运行,且无论申请了多少个线程,这些线程都是在核1上运行。在linxu系统下,可以通过taskset来设置程序的cpu亲缘性,也就是可以限制程序只能在哪些(甚至是哪个)核上运行。
2025-03-05 13:55:32
295
原创 康耐视智能相机(Insight)通过ModbusTCP发送字符串到倍福(BECKHOFF)PLC中
通过底层的方式实现数据传输,学是能够学到好多东西,但是就是贼麻烦,且鲁棒性差。不知道为啥Modbus这么通用的功能,康耐视智能相机为啥就是不支持。【TwinCAT 3 Modbus TCP使用方法】【Modbus TCP协议说明】【ModbusTCP数据帧】【如何看懂Modbus数据帧?
2024-12-12 11:28:08
1781
原创 在QML中访问野指针属性导致程序崩溃
最近在对之前写的一个软件进行重构,重构完之后,给到现场去用。现场反馈说,软件操作操作着,就崩溃了。这些全是qml里面的东西,又不给从c++到qml的调用堆栈,哪怕只是qml代码的调用堆栈也好。不知道怎么定位好了。
2024-10-22 13:55:12
492
原创 使用纯代码加载glb/gltf文件,然后使用Qt3D来渲染
在,我们已经实现了使用Assimp来读取模型,然后放到Qt3D中渲染。但是有时候,Assimp库的编译太麻烦:我们有时会发布程序到手机、或者嵌入式板子上,编译一个可以在这些设备上使用的Assimp库工作量太大。有没有办法,直接把某个库的代码包含进我们的工程,不依赖任何其他第三方库(或者依赖的库也是纯代码的形式包含进来),直接编译就行了呢?这样,我们就不用为各个平台都编译第三方库了。
2024-09-20 16:07:58
1622
原创 使用Assimp加载glb/gltf文件,然后使用Qt3D来渲染
ModelLoader.hModelLoader.cpp参考【How can I load a QPaintedTextureImage into a QTextureMaterial?】
2024-09-18 10:13:46
984
原创 Qt中使用DAG(有向无环图)
后来要求工具之间能存在依赖关系,也就是A工具的输出可以作为B工具的输入,这样就很麻烦了,谁知道用户会怎么勾搭各个工具的输入和输出?之前做的一个视觉检测项目,本来各个视觉检测工具之间是独立的,单独执行图像输入、得出结果,然后综合汇总结果,简单明了。这个库是实现了有向无环图的表示,但是在添加子对象时,没有检查添加子对象后会不会造成环型;结果发现,这个工具与工具之间得依赖、拓扑关系,是一个著名的概念:有向无环图(DAG)。,但是这个库貌似是依赖boost,有点大。ok,既然找到资料的切入点,那就好办了。
2024-09-06 16:31:38
563
3
原创 CodeSys中动态切换3D模型
在前面的中,我们已经实现了一个可以显示3d模型的控件。但是这个控件是和使用的3d模型绑定死的,在安装这个控件时就已经将模型文件于控件一起安装到codesys中。假如我想在不同的工程中,对这个控件动态地指定不同的模型,该怎么实现?
2024-09-05 17:09:50
1086
原创 QtWebEngineView加载本地网页
直接加载放在exe同级目录下的资源是不行的,需要把资源通过qrc放到exe里面,然后通过类似。运行网页中包含的脚本,还可以取得返回值。这样的路径加载才行。
2024-08-23 15:19:30
709
原创 Qt下让程序只运行一个实例,避免重复打开
做了一点点更改,主要是在openEuler上用时遇到的一点问题。在主函数实例化Application后,调用即可。
2024-08-19 14:00:34
563
原创 如何对open62541.h/open62541.c的UA_Client进行状态(在线/掉线)监控
可以发现,我们可以对UA_ClientConfig中的stateCallback进行赋值,也就是注册一个状态回调函数,从而获取客户端的状态变化。上位机这边会定时对PLC的某个opcua变量进行写操作。目前在利用open62541.h/open62541.c编写了一个与PLC进行OPCUA通讯的上位机程序。这个opcua库对多线程的处理比较差,很容易造成冲突。有没有什么办法可以监控client的状态,了解其是什么时候掉线,掉线了我就不写就行了。幸亏,是有这么一个回调函数的,参考官方的例子。
2024-08-12 15:05:14
842
2
原创 Windows下,已知程序PID,取得其窗口句柄HWND
我需要实现这么一个功能:在知道某个程序的PID的情况下,最大化并且置顶显示这个程序的窗口。listProcessIdentifier函数的实现请看前一篇。
2024-08-05 15:38:02
894
原创 在Qt中获取Windows中进程的PID
利用 QProcess调用这个tasklist有一点坑,已经在代码中指出了。主要是用到了系统自带的工具【tasklist.exe】可以看到,得到的结果与在任务管理器中看到的是一致的。指定为csv格式输出的话,在后处理时比较方便。
2024-08-02 11:30:44
680
原创 使用Qt3D绘制机械手场景
之前是使用Coin3D来绘制机械手场景的【Qt利用Coin3D(OpenInventor)进行3d绘图】。后来需要在HarmonyOS显示这个机械手模型,但是想要编译Coin3D到HarmonyOS的话,显然太难了。然后尝试使用OpenGL原生的函数来绘制,但是HarmonyOS对很多函数都不支持,一查,发现HarmonyOS支持OpenglES。那就麻烦了。最后,一番兜兜转转,还是用回Qt3D吧。
2024-07-31 14:41:32
743
原创 DevEco Studio中使用Qt,编写HarmonyOS程序
最近需要尝试把之前在Windwos下用Qt实现的程序移植到鸿蒙(HarmonyOS)系统上。我使用的DevEco版本是5.03.501找了一下资料,官方(也可能是社区)人员已经做过了Qt的移植。下载了后,按照他们的操作手册来操作就可以了。
2024-07-28 15:12:29
4185
13
原创 利用git将Qt代码托管到U盘或者网盘
我们在开发项目时,随着项目需求的增加以及bug的修复,肯定会涉及到版本管理的问题。由于git的使用具有一定的门槛,之前我都没怎么用。基本没有怎么进行版本管理,而是周期地(比如每天)把代码压缩打包备份一下,然后将他们放到网盘中,如下图所示:但是这样没办法迅速、明确地知道自己两个不同的备份之间有那些不同,尤其是想回退到某个特定的版本时,简直就是噩梦。而git就能很好地进行版本管理。说到git,肯定就有人想到github了。但是有一些代码是不方便外传的;又或者出于谨慎,只想把代码备份到U盘的;
2024-07-05 17:06:35
968
原创 Qt(MSVC)下报“语法错误缺少“}““语法错误缺少“常数“ 的解决办法
只要把这个头文件放在QtHttpServer的后面就可以了。经过一番排查,发现了问题。是open62541.h的问题。后面我知道了,再更新上来。我记得之前我用得好好的啊。
2024-07-03 14:03:13
598
原创 Qt利用Coin3D(OpenInventor)进行3d绘图
首先,到官网下载我是Qt5.15.2+vs2019的,因此我选择这个coin-4.0.2-msvc17-x64.zip到官网下载Coin3D在Qt中的封装库我是Qt5.15.2+vs2019的,因此我选择这个quarter-1.2.1-Qt5.15-msvc17-x64.zip将这两个压缩包放在在同一个文件夹中,先解压coin-4.0.2-msvc17-x64.zip,然后再解压。
2024-06-19 15:42:51
1591
原创 在Qt编写的exe或者dll中设置版本号
在别人编写的exe或者动态库中,通过右键–》属性–》详细信息中,通常都有版本信息:那我们自己编译出来的Qt程序,如何设置这些版本号呢?
2024-06-17 14:17:28
1729
原创 将机械手与CodeSys中的运动学模型绑定
最近搞到了一台工业机械手,虽然这个机械手有自己的控制程序,但是我们还是想用CodeSys来进行运动控制,测试一下它的运动控制功能是否可用。下面介绍一下如何将CodeSys中的运动学模型与现实的机械手进行绑定(映射、对应,使用你喜欢的术语)。可能运动学模型有些结构一眼看上去和实际的物理机械手结构不一样,但只是距离为0而已。一定要确保能够对应上才能进行后面的操作。
2024-05-11 10:32:54
2149
原创 Qt使用OPCUA
但是在Qt6之前,假如想使用这个库,还得自己编译,比较繁琐。假如想开箱即用,而且没有使用太复杂的功能的话,其实可以直接使用open62541.h、open62541.c这两个文件。假如想在Qt下使用OPCUA通讯,貌似大家都是倾向于使用。然后就可以参考官方的例程来进行开发了。
2024-04-28 14:40:09
1750
原创 关于通用相机库
之前以为既然工业相机(usb3_vison,gige)使用了同样的通讯标准,那应该可以使用同样的sdk。但是事实上,并不行,不同厂家的同样通讯标准的相机,并不通用,比如,我想用Basler的Pylon打开海康威视的相机,打不开。难道说,这个GenICam协议,是软件层的协议,而不是通讯链路层的协议?这两个库,弄懂了他们的区别,应该就知道GenICam真正是个什么东西。但是,为啥会涉及各个相机的SDK?然后再翻一下它的资料。根据它的资料介绍,貌似可以支持好多相机。
2024-04-25 11:05:27
1007
原创 在win10上虚拟一个LoongOS系统(类似虚拟机)作为开发环境
loongnix社区预制系统(网站:http://pkg.loongnix.cn/loongnix/isos/Loongnix-20.3, 文件:Loongnix-20.3.mate.gui.loongarch64.cn.qcow2)。引导固件(网站:https://mirrors.wsyu.edu.cn/loongarch/archlinux/images,文件:QEMU_EFI_7.2.fd)、这样经过映射后,虚拟机里面的22端口就被映射到了本地的5678端口,因此,我们只需要通过。
2024-04-09 14:26:25
1176
原创 Linux下Qt生成程序崩溃文件
Linux下程序的崩溃文件生成相对于Windows下还方便一点(Windows下还得自己保存dmp文件),可能各有千秋吧。暂时还没试过在A电脑编译程序,然后放到B电脑运行产生core文件,然后再拿回A电脑进行代码定位。有空的话得测试一下。【Linux生成core文件相关配置,core文件调试示例】【【问题记录】Ubuntu 22.04 环境下,程序报:段错误(核心已转储)怎么使用 core 文件和GDB调试器 解决?
2024-04-03 15:26:25
1707
原创 开发CodeSys可视化控件
这种方式好像是把系统自带的一些基础可视化控件进行排列组合、形成自己的自定义控件。然后我想利用CODESYS Installer安装这个插件,结果没有找到,目前接公司需求,需要开发一套视觉检测系统,并将其集成到codesys中。,理由是html5的控件更好、更容易使用。编程端基本是采用之前说得的C接口来实现。
2024-03-20 11:52:05
1326
原创 CodeSys通过C函数接口调用Qt
假如想要在函数中使用Qt或者第三方库(比如opencv等),可以在其自动生成的makefile文件中设置好相应的参数。这样操作之后,在include对应的头文件后,就可以在函数中使用opencv、Qt了。,了解如何创建一个能够被codesys调用的动态库。1.将编译器由c改成c++2.使能opencv库。建议先查看之前的文章。
2024-03-08 14:28:57
1355
原创 Codesys自定义库的帮助文档的美化
当我们在codesys中写好自己的库,并且发布给别人使用时,别人可以在库管理器中查看到我们库的帮助文档。但是codesys默认帮我们生成的文档,看起来比较简陋:看一下系统的,他的帮助文档有图、有表格、有代码示例,看起来很好看:假如我们也想做到这样子,该如何操作呢?
2024-03-06 17:40:46
1501
3
原创 CodeSys中调用C语言写的动态库
假如我们需要在CodeSys的编程环境中使用我们自己的功能,比如:用第三方的IO板卡通讯、PDF文件生成、相机采集图像并处理等等一些复杂的功能,那就可以使用CodeSys提供的功能,通过C语言动态库接口来实现。这里简单记录一下如何创建能够被CodeSys识别的C语言动态库。有了这个接口,只要我们对OpenCV、相机驱动库等进行封装,然后提供对应的操作函数给接口,就可以实现PLC的视觉检测功能。完美。【CodeSys V3.5创建一个编译库】
2024-02-27 10:13:27
6916
21
康耐视智能相机ModbusTCP发送字符串代码
2024-12-12
windows下使用的Tesseract库
2020-10-16
sysrootChange.py
2020-06-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人