自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (17)
  • 收藏
  • 关注

原创 Modbus数据采集方案

modbus协议应该是工业行业应用最广泛的协议,由于其协议简单、通讯标准、扩展性强的特点,被各个行业大量的应用。作为通讯网关机来说,设计一个便捷易懂的配置方式显得尤其重要。本方案基于modbus的特点,将配置界面分为5大块,分别为缓存配置、遥信配置、遥测配置、遥调配置,通过配置的方式即可实现对数据的读取和转换。关于modbus协议的介绍网上已经有很多了,这里我只做一个简单的介绍。所有数据可以将它分为4类数据,分别是DI(数字量输入)、DO(数字量输出)、AI(模拟量输入)、AO(模拟量输出);

2022-12-10 20:52:40 2887 2

原创 深瑞IEC103协议

深瑞IEC103

2022-11-10 21:44:52 1548

原创 Qt Android 开发笔记

Qt android

2022-08-02 16:14:13 700

原创 串口IEC103协议

串口IEC103协议一般采用的是非平衡式通讯方式,因为要支持一个主站同时访问多个子站设备,子站之间通过地址来区分,就跟Modbus_RTU类似也是一问一答方式。但是103协议有很多不同的服务,每种服务的报文结构也不一样,长度不一样,基本无法做到像modbus那样,发送请求得到回复这种简单的方式。...

2022-07-24 22:55:54 4401

原创 软件在线升级系统设计

Qt软件在线升级系统设计

2022-03-16 13:55:01 1448

原创 libmodbus 开发说明

概述最近想给网关机增加一个modbus_tcp子站(slave),本来准备自己写一个,了解了一下开源库libmodbus觉得相当不错。采用C语言开发,支持跨平台,Linux, Mac OS X, FreeBSD, QNX and Win32。与Qt开发的程序可以完美结合支持TCP、RTU两种模式,支持Slave和Monster支持多联机,采用的select模式,性能各方面肯定没问题有完善的说明文档 官方文档安装编译直接在github或者官网下载,官网见上面,我选择的是3.1.6版本,编译

2021-06-08 09:44:33 1282

原创 通讯网关机-首篇

1. 引言工作以来一直从事电力行业,其中对于电力通讯规约非常感兴趣,也一直从事这相关方面的工作,涉及到IEC61850、IEC104、IEC103、Modbus等规约的开发与应用。其中有一段工作经历,是负责通讯管理机的维护开发。当时的通讯管理机,由于成本以及历史问题等原因,是基于单片机开发的,而且是裸跑。这对于通讯管理机来说,此种软件架构在可维护性、扩展性方面都存在比较大的问题,难以满足很多高级应用需求,所以一直有重新设计一个通讯管理机的想法。经过大概两年的一个不断重构与优化,设计了一个基于实时数据库、组

2021-06-02 22:25:20 1372 2

原创 python 入门

需求描述项目上需要生成word格式的测试报告,程序是基于Qt开发的,用的QAxObject来生成报告。首先需要系统安装了word,如果报告内容多的话,生成速度非常慢。找了一圈没发现特别好的C++的word操作库,docx库比较好,但是只有C#和python的语言的。考虑到python应用场景比较多一些,C#还得安装net环境,所以开始研究一下python。经过一天的研究,基本算是入门 了,下面将安装过程、打包发布、word生成、XML文件读取做一下笔记。整个工程都上传到资源文件中,做一个备份。pytho

2021-06-01 22:56:20 225 7

原创 Qt 批量编译工程

问题描述随着Qt工程越来越多,目前已经有90多个工程了,有些源文件是公共的,修改一处就需要编译所有工程。试了Qt的子项目管理,发现能将所有工程全部添加到一个pro文件中,但没法一键全部编译,还得右键一个一个的编译。所以,就想写一个小的程序来实现批量的编译。解决方案基本思路就是先调用qmake编译pro文件生成makefile文件,然后调用nmake编译程序。小程序的作用就是生成一个批处理文件,然后编译的时候,直接执行批处理文件就行了。[General]qmake=D:/Qt/Qt5.5.1/5.5

2021-05-31 13:45:52 682

原创 QThread moveToThread用法总结

方案1Qt中创建独立的线程,一般都是采用继承QThread类,然后重写run虚函数,在run函数中执行任务。class CThread: public QThread{Q_OBJECT public: CThread(QObject *parent = nullptr){}private: virtual void run() { //task while(true) { } }}当需要在独立的线程中用到自定义的类,用到信号槽的时候,需要在独立线程中,开启一个.

2021-04-04 10:26:19 1706 1

原创 mosquitto 配置以及使用说明

mosquitto是一个支持Linux以及Windows平台的mqtt服务器。在项目中用于实现对单台或多台仪器的远程控制,下面记录使用过程中的几个要点只能本机客户端访问,无法远程访问解决方法:需要手动配置一下监听端口,然后启动的时候指定配置文件。常用配置默认的配置文件为安装目录下的:mosquitto.conf打开配置文件,设置监听端口号2005,默认为1883# listener port-number [ip address/host name/unix socket pat

2021-02-25 13:58:37 2416 2

原创 基于QSsh实现sftp客户端以及shell

需求描述公司的产品基本都是基于arm-Linux系统的,sshd服务肯定都是标配了,目前需要实现一个通过上位机与仪器相连,完成仪器的升级。各种方案使用下来,发现最简单以及有效的方案还是采用如下步骤:将应用软件压缩打包成tar包;开机启动脚本启动的时候,去检测是否存在需要升级的tar包。如果存在升级包,则解压覆盖升级包;启动主程序;所以需要做的工作有两个部分,第一步是将升级包下载到仪器指定位置,第二步是重启仪器,等待升级完成。考虑过ftp服务、私有协议等,发现用sftp是最方便的,因为系统本身都

2020-10-29 15:11:34 5833 61

原创 基于UDP的设备查找

需求描述设备为通讯管理机,在一个局域网内会有多个这样的设备,然后通过上位机,需要能查询到局域网内通讯管理机的IP地址。思路开发语言上位机、下位机都采用了Qt,然后准备用Udp来实现,折腾了一下午,目前测试效果还不错,基本思路如下:管理机加入到组播,监听组播报文,比如组播地址为“239.255.43.21”;上位机不加入到组播,需要查询的时候,直接给组播地址发送请求设备IP报文;管理机从组播网络接收到指令以后,直接给上位机地址(也就是报文发送地址)回复包含自己的IP地址注意事项UDP报文

2020-10-17 09:03:21 1842

原创 Docker学习笔记

在物联网的项目中碰到了Docker,以前只是经常听说,并没有实际的去研究,今天用了一下午的时间,完成了docker的安装,在docker上拉取redis镜像,然后访问docker中的redis服务器,基本了解了docker的大体使用。Docker是什么docker是安装在Windows或者Linux系统中的一个应用软件;镜像是运行在docker里面的;镜像是一个配置好环境的应用,比如这次的redis,拉取之后就可以直接使用,无需安装其他的依赖项;Docker安装本文安装的系统是虚拟机中的ub

2020-07-17 15:24:22 103

原创 基于cJson的 Qt json处理库

qt4没有原生的库对json处理,Qt5提供了json处理库,使用起来稍微感觉有点麻烦,特别是修改值的时候,非常不方便。cJSON是一个C语言编写的json处理库,已经被大量的使用,稳定性和高效性毋庸置疑,该库只包含一个.h 和 .cpp文件,使用起来非常方便,但是对于习惯Qt开发者来说,CJSON库需要自己管理内存的开辟和释放,使用不是特别方便。QJSON库基于CJSON,进行Qt的封装,解决Qt原生使用不方便和CJSON手动管理内存的问题。本项目已经在Github上开源,QJSON,以下是头文件,一看

2020-07-17 10:03:58 891

原创 Qt编译qmqtt

mqtt协议目前是物联网领域使用最广的协议了,比如阿里云物联网平台与设备就是采用的mqtt协议。mqtt协议的介绍,网上已经非常多,下面是几个关键点:MQTT协议基于TCP协议,设备是客户端,云服务器是服务端;基于发布/订阅消息机制来实现数据交互,客户端可以发布和订阅多个topic(主题),客户端1发布某个topic,客户端2订阅某个topic,这样客户端2就能接收到客户端1发出的数据了;topic(主题)可以理解为设备要对外发布数据或者接收的指令。比如,上传某个或者某些数据定义为一个topic;

2020-07-17 09:42:09 1378 2

原创 QJsonArray、QJsonObject修改值

Qt5的json读取和新建接口都挺方便的,但是对现有文件进行修改,用起来感觉很不方便,pugixml的接口感觉就做的非常好了,下面对修改方法进行一下记录。示例代码 //构建测试数据 QJsonObject json; QJsonArray array; for(int i = 0; i < 3; i++) { QJsonObject ...

2020-05-06 11:44:27 5426 1

原创 嵌入式linux 文件系统变为了只读解决办法

问题描述公司手持式设备,使用的嵌入式Linux系统,外挂SD卡,触摸屏操作。在使用一段时间以后,发现SD卡变成只读了,必须格式化以后才能使用。解决方法通过网上查资料发现是写入文件没有同步导致的,所以在程序中写入文件的地方都需要加上::system("sync")由于系统比较复杂,使用一段时间以后,还是会偶尔出现SD卡变成只读的情况。如果能够通过软件的方式解决就好了,因为拔SD卡这种方式...

2020-04-22 10:40:56 2018

原创 南自以太网103规约

本文以主站的角度对南自以太网103规约进行解析说明。1. 通信方式主站(后台/远动)在通信角色上是一个TCP服务端,子站(保护装置)是TCP客户端,默认的监听端口是1048。主站通过UDP报文将IP地址广播出去,子站主动连接上主站,UDP默认的端口是1032。UDP报文的格式如下,总共41个字节,由主站定时发送。字节位描述字节00xFF 表示主站字节10x0...

2020-01-01 20:38:05 7220 1

原创 交差编译-编译Qt4.8.4源码

最近研究新唐的nuc980板子,研究了一下如何搭建交差编译环境,以及编译Qt源码。交叉编译器安装首先是安装交叉编译器,这个直接从安装包获取就行。首先从官网下载BSP文件NUC980_Linux-4.4_BSP_v1.02.000.zip解压以后找到下面的文件,然后解压到虚拟机中/usr/local目录下arm_linux_4.8.tar.gz这个就是交叉编译器,如果编写C++...

2019-10-07 17:21:53 374

原创 Ubuntu使用expect自动输入root密码

需求:应用运行在Ubuntu系统中,由于需要自动修改网卡IP,所以必须先获取root权限。解决方案:网上查了一下都是推荐使用expect来实现,首先安装expect,直接输入sudo apt-get install expect编写sh文件,以root权限运行应用#!/usr/bin/expect -f spawn sudo /home/crxos/CRX300Y/app/c...

2019-09-11 11:24:48 670

原创 Qt HTTP post文件

用Qt与服务器进行文件交互,开始想的用ftp,由于文件不大,不超过2M,所以互联网的同事建议用HTTP post。下面把Qt post文件的方法记录一下。bool CImpedianceReport::PostPicture(int report_id, QString fileName){ //设置发送的数据 bool bRet = false; QHttpMulti...

2019-07-24 09:50:44 2640

原创 QFtp 阻塞式调用

问题描述Qt应用由于要跑在嵌入式Linux系统中,里面的Qt版本是4.8,所以决定采用QFtp来进行文件传输。QFtp有个问题是异步调用的,所以用起来很不方便,所以决定用QEventLoop来阻塞处理。方案一QFtp *ftp = new QFtp(this);QEventLoop loop;connect(m_ftp, SIGNAL(commandFinished(int,bool))...

2019-07-24 09:42:06 1084 1

原创 tinyxml工具创建XML的一个小坑

问题描述:最近在用tinyxml保存XML文件的时候发现一个问题,程序保存几次XML格式的配置文件以后,就会发现配置文件格式出现问题了,不符合XML规范了。具体为多出了一部分内容。用tinyXML解析没有问题,但是用其他的就会出现问题,非常奇怪。解决方案:经过分析发现,原来tinyXML保存文件的时候是以读写的方式打开,而不是一般采用新建的方式。所以,将QIODevice::ReadWrit...

2019-07-08 22:51:29 383

原创 Qt编写的删除C++代码注释小工具

删除C++代码注释小工具遇到的问题直接上代码遇到的问题查看前辈的Qt代码,发现好多没用的代码注释掉了,但是没删,而且这种代码非常多,所以想将这些注释删除掉。整体设计思路如下:1、注释就是两种情况: ‘//’ 和’/* /’,其中/之中也可能会包含//2、定义三种模式:自由查找、找到了/、找到了/直接上代码 ui-&amp;amp;amp;gt;progressBar-&amp;amp;amp;gt;setMaximum(ui-...

2018-11-11 19:52:04 1517

原创 Apache PHP MySQL 加 C++环境配置

作为一个传统的电力公司,软件主要在Windows PC上或者嵌入式设备里面。现在想搭建一个云服务器进行一些数据的长期存储和读取分析,而工作中主要是使用Qt、C++、C进行程序开发,对互联网那一套不是很熟。通过了解,Apache PHP MySQL这个方案比较能够满足比较成熟稳定,但是对PHP又不熟,重新开始学,觉得太麻烦、成本太高,所以决定用PHP负责接口,Qt负责业务处理。整个流程如下:客户...

2018-02-24 13:17:57 421

原创 Qt 嵌入式环境搭建(二)

1、在虚拟机中安装Ubuntu12.04,虚拟机版本9.04,Ubuntu12.04版本ubuntu-12.04.1-desktop-i386.iso。安装Ubuntu中需要在线下载语言包,所需时间较长,请耐心等待; 2、更新系统sudo apt-get updatesudo apt-get upgrade3、从Qt官网下载对应版本的qt-opensource-linux-x86-5.5.1.r

2017-12-02 21:57:28 380

原创 windows下Qt编译MySQL驱动

我的Qt使用的Qt4.8,用的编译器是msvc2010。下面说一下使用步骤: 1、下载MySQL,推荐用MySQL5.5; 下面这位大神给出了下载连接:http://blog.csdn.net/tenlee/article/details/43614241 2、第二步就是安装Qt,安装的时候记得把源码勾上; 3、第三步就是用Qt的库编译出适合我们编译器的QMySql驱动,进入下面的目录:

2016-11-17 09:33:59 920 1

原创 树莓派开机启动Qt程序

用树莓派上用Qt进行图形界面开发,发现无法自动启动程序,找了好多方法都是不行。网上都是讲怎么启动脚本的,但是脚本的启动与图形程序是不同的。树莓派开机启动流程:自动登录–>自动启动窗口–>自动运行用户程序脚本程序可以在自动启动窗口这一步之前运行,但是用户程序是不行。下面来看一下怎么启动用户程序:进入当前用户HOME目录下的.config目录(这是一个隐藏目录,需用ls -a显示出来) cd ~/.

2016-10-18 09:45:20 6701 3

原创 Qt arm嵌入式交叉编译环境搭建

刚接触linux系统和Qt,这个编译环境的搭建确实让人很是烦恼。经过一个多月时间的接触,基本搞定了,虽然有些东西还是不是太明白,这在做个总结。Qt的理解 首先得明白,qt就是一个C++类库。用的时候,我们是通过调用它的动态库来使用的。这就涉及一个问题了,在不同的系统上比如windows、linux、arm-linux上编译器不一样,所以我们就需要用对应的编译器编译Qt的源码,来获取对应编译器的版本

2015-10-14 13:57:26 7288

原创 Qt事件原理小结

最近做一个项目,想把QTableWidget的左右键改为翻页的效果,重新整理了一下Qt的事件机制。Qt的事件机制是这样的:所有事件都要先送到main函数中的qApp,也就是QApplication的实例,从这里再进行分发。分发到哪里呢?对于键盘事件要看当前是谁获得了焦点,这个事件就发给那个对象。如果这个对象处理了事件,那么事件的传递就到此为止;如果这个对象不处理这个事件,事件就会传递给它的父对象,如

2015-10-13 16:26:09 791

原创 C++ 用户自定义类型

定义一个类CDataNode,这个类表示一个树形数据结构中的一个节点。遍历树形结构判断节点是否为空的时候,想直接用这样的方式:CDataNode node;if(node){}else{}实现这个功能的方法,其实就是用户自定义类型。定义一个能够用if()直接进行判断的数据类型:int bool //.h文件中class CDataNode{public:CDataNode();ope

2015-10-13 13:29:57 911

原创 protobuf用法总结

protobuf是Google公司出的一个的序列化工具,用了一段时间,感觉很不错。 我主要将它用于程序相关的配置信息进行保存读取。 使用方法:下载protobuf源码,编译生成相关的lib文件。下面给出我已经编译好的lib和头文件,并且包含一个生成头文件和源文件的批处理文件,使用起来十分方便;下载地址编辑XXX.proto文件,将需要的结构体进行定义package conf;messag

2015-09-23 14:31:10 3039

原创 C++ 继承中的一个小知识点

背景:有三个界面类,类CA、CB、CBase;其中CBase类继承自QDialog类,CA、CB类继承自CBase类。首先我实例化一个CA类,那么它会实例化一个CBase基类;如果我在实例化CB类的时候,传进去CB(CA)那么,它只会实例化CB类,而不会实例化一个CBase类。应用场景:在进行两个界面覆盖的时候,要单独实例化,CA、CB才可以,否则会出现问题。

2015-09-18 09:57:20 614

原创 Qt调用dll的步骤

做个记录,以防忘记。        -L 参数指定 .lib/.a 文件的位置         -l  参数指定导入库文件名(不要加扩展名)          另外,导入库文件的路径中,反斜杠用的是向右倾斜的示例:LIBS+= -L ..\libcltdll-build-desktop-Qt_4_8_0__4_8_0____\debug -l libcltd

2015-08-27 11:10:35 632

原创 使用VProtect给自己开发的软件加密

最近开发的软件,有加密的需求。但是自己又不想花太多的时间放在上面,而且我们的软件一般也不会有很多人会去破解它,所以觉得不用搞的太复杂,能够限制住菜鸟就行。下面就自己用的这款加密软件分享给大家,感觉还不错,先看看效果吧。 打开软件后的界面: 注册机的界面: 下面就来说一下它的使用步骤: 第一步,下载一个Vprotect软件,它自带注册这个软件的注册机。下载地址:VProtect绿色版下载,

2015-08-18 14:50:52 8681 3

原创 C++ 回调函数的用法

首先说一下我的需求:设计一个MMS客户端的动态库,给应用去调用。动态库从网络上接收到消息(报告)以后,需要通知应用,让应用更新数据。这种情况,回调函数能够满足我的需求。这里先说一下我对回调函数的理解,就结合上面的需求来说,动态库需要将一些消息通知应用,那么怎么通知了?通过调用应用的一个函数,动态库调用应用的函数的时候,就会将参数值传递给这个函数,那么应用就可以在这个函数中根据传递过来的参数值,进行自

2015-08-11 09:42:14 1334

原创 pugixml工具简单介绍

做智能变电站方面的东西,对于XML(SCD)文件的解析是无法避免的,最近使用了pugixml这个开源的解析工具,发现真的是太好用了。吸引我的地方主要以下几点:1、装载速度很快。比C++语言写的timyxml快很多,比C#里面的xml解析工具也快很多;2、C++编写,支持跨平台,同时支持unicode编码,支持中文;3、以源代码的方式提供,只有三个文件:pugiconfig.hpp、pugix

2015-05-09 18:05:25 3252

原创 QTableWidget的使用记录

Qt界面编程之QTableWidget 主要参考了,这位大神的文章:http://blog.csdn.net/xcy2011sky/article/details/6991073先看效果图: 这里主要说明一下,这个类的常用用法:// 设置数据的行数和列数 ui->tableWidget->setColumnCount(2); ui->tableWidget->setRowC

2015-04-12 09:49:19 750

原创 C语言二进制和float、int类型转换

最近工作需要用到float型的数据和二进制之间的转换,网上提到了一些方法,比较多的就是先分析float型数据在内存中的存放方式,然后根据IEEE标准进行转换。 个人觉得还是有点麻烦,看到其中有一种方法,感觉很精妙,记录下来,方便以后查看。

2015-03-13 16:03:16 6922 4

SCD对比图形化软件(V7.8).zip

智能变电站SCD文件图形化、SCD文件比对工具,免注册

2021-10-25

python开发包.rar

Qt与python混合开发包,python安装,sublime、kite、示例程序

2021-06-01

Compile.rar

Qt批量编译多个工程小工具,适合一次性编译多个Qt工程

2021-05-31

适用于Qt4、Qt5的mqtt客户端

适用于Qt4、Qt5,直接打开pro文件编译,就可以使用。非常方便

2021-02-25

适用于Qt4、Qt5的开源json处理库

基于“开源json处理库cJSON”,采用Qt进行二次封装,与QByteArray、QVariant类相结合,比Qt5自带的Qt处理库方便简单。 Github地址:https://github.com/croxs-power/QJson.git

2020-06-27

Qt编写移除C++代码注释源码

Qt5编写的移除代码注释源码,Qt5编写的移除代码注释源码,

2018-11-11

CRX2100_SCD文件比对分析软件

IEC61850 61850 SCD比对 SCD解析 SCD图形化 SCD检查 SCD规范性 保持更新

2018-04-11

IEC61850-SMV波形比对工具

该工具用于SMV波形比对: 1、目前只支持pcap格式,用于对两个pcap文件指定通道的波形比对; 2、可以对波形进行缩放、展开、移动、复原操作; 3、两个游标用于查看波形值、确定展开范围,支持方向键操作; 4、波形微调,用于移动波形的相对位置。

2016-01-24

protobuf编译好的文件

编译好直接可以使用的protobuf文件。运行bat文件,即可直接生成对应.proto的头文件和源文件

2015-09-23

VProject软件加密

方便不用写代码的给自己开发的软件加密的方法 VProtect,强烈推荐

2015-08-18

winPcap裸包的发送接收

winPcap裸包的发送接收,数据链路层的数据接收发送,自定义裸包发送和接收

2015-01-28

基于raw socket的UDP数据的发送和接收

基于raw socket的UDP数据的发送和接收,自定义IP头,UDP头,数据

2015-01-28

MFC 日志记录

用于MFC程序日志记录类,方面错误的查找

2014-12-31

socket server端和client端 MFC 源代码

mfc框架下,socket和client端源代码,客户端和服务端能像QQ对话框一样聊天

2014-11-03

mfc 曲线取值可执行文件

MFC 曲线动态显示 mfc 画图 曲线取值 可执行文件

2014-08-05

mfc曲线实时动态取点

MFC 曲线动态显示 mfc 画图 曲线取值

2014-08-05

MySQL数据库转移到SqlServer数据库

MySQL数据库转移到SqlServer数据库工具 使用方法见博客“将MySQL数据库转移到SqlServer2008数据库”

2014-07-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除