自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

haohaoganhuo的专栏

学习心得,一些学习代码共享

  • 博客(20)
  • 资源 (8)
  • 问答 (3)
  • 收藏
  • 关注

原创 EM9636数据上传百度云

如果想让EM9636数据上传至百度云,需要使用到百度云的物联网核心套件功能。下面简要介绍一下创建设备的过程,详细信息可以参考下面的连接:

2022-12-21 11:20:22 872 1

原创 VC对话框调整位置并且保存、恢复;非模式窗体不在任务栏单独显示

有一些数据采集卡功能比较多,有AD采集,DA输出,开关量输入,开关量输入,计数器采集等等功能,如果能够放到一个对话框中,同时显示输入量,设置输出量是最理想的情况了,但是在通道数比较多的情况下,一个对话框往往盛不下那么多的功能,此时就需要将不同的功能分配到不同的对话框中,如果想要同时显示多个对话框,在不同分辨率的显示器上就会有不同的排列方式,此时如果能够让程序记住对话框的位置,每一次打开程序的时候就可以按照相同的方式来显示,这样程序在不同的地方运行时,只要摆放一次就可以了。...

2022-08-10 19:15:44 459

原创 QT在循环中更新界面

最近有一个项目需要将采集结果显示在一个表格中,但是每个数据都需要一定的时间才能够得到,如果等全部数据都得到后再填充表格,会有很长一段时间处于假死状态,为了改善用户体验,要得到一个数据就填充一个表格,查资料后使用QEventLoop类和QCoreApplication::processEvents()函数实现了功能,并且可以随时中断表格的填充,类和函数说明请按F1具体代码如下:......

2022-07-12 22:32:04 1076

原创 MFC串口编程点滴以及加锁保护数据

客户用VC编程,串口操作485设备,需求很简单,发一条指令下去,然后接受设备返回的数据,解析后显示到界面上,他使用VC定时器来发送指令,定时50ms,想着20次发送一次指令,这样数据就可以1S更新一次数据了,结果完全不是他想象的那样1S发送一次,经常几秒甚至几十秒才能够发送一次,我看了他的代码,在定时器时间里面做了很多的工作。我判断他在定时器里面的操作远远不止50ms,所以决定帮他修改一下串口部分的代码,单独建立一个线程来发送与接收数据。大体思路就是打开串口,设置好参数后建立一个线程,在里面使用ReadFi

2022-07-12 16:36:22 462

原创 linux下一些操作技巧-root登陆;安装SSH;安装samba等等

我使用linux,主要是编写驱动,测试程序,这里记录一些常用的操作方法,注意有一些操作会带来安全问题,所以请勿在主要工作机器上尝试。ubuntu下安装SSH并且设置为root方式登陆如果显示内容包括了sshd,则说明已经安装成功并且运行起来了。设置成root登陆方式:找到 #Authentication,将 PermitRootLogin 参数修改为 yes。注意PermitRootLogin 参数可能被注释掉了,请去掉首行的注释符号(#)。我的机器最终结果如下所示:SecureCRT设置显示中

2022-07-04 13:46:46 602

原创 MFC曲线控件ChartCtrl简单上手教程

在数据采集中,有的时候需要将采集数据以曲线的方式显示出来,MFC并没有提供容易使用的曲线显示控件,好在有好心人写了ChartCtrl控件,可以很方便的绘制曲线。其代码公开在CodeProject网站:https://www.codeproject.com/Articles/14075/High-speed-Charting-Control由于年代比较久远,使用VC2017的时候会有些警告,但是都不影响使用。接下来我会使用一个示例来说明控件的使用方法,同时也为我自己以后使用的时候能够快速回忆起用法。老版

2022-06-25 18:15:26 5539 1

原创 微软EV签名升级过程

有些日子没有给驱动程序签名了,今天进入仪表盘,出现了如下提示:ATTENTION: We recently made changes to signature validation on all Partner Center for Windows Hardware submissions. You must take action before you can create new submissions, or publications. https://aka.ms/cert_revalidatio

2022-06-23 10:25:57 259

原创 关于64位windows驱动使用测试证书安装的设置方法

网上往往只提到了打开测试证书的步骤:bcdedit /set TESTSIGNING ON这里需要注意的是命令行窗口是要运行在管理员模式下的,否则会提示:无法打开启动配置数据存储拒绝访问。另外还要将测试证书安装在受信任的颁发机构上测试证书是在工程输出目录下,以cer为结尾的文件,在目标机上右键单击文件,选择安装证书->将所有证书都放入下列存储->浏览->受信任的根证书颁发机构,然后根据提示下一步直到完成即可。做完上述操作后,一定要重新启动计算机才能够生效。下面说一下使用管理员方式运行命令行窗

2022-06-21 10:06:42 641

转载 在VC和QT中实现可变参数的打印语句

在VC中,我们经常需要打印一些信息来判断程序是否正确执行,使用MFC时,在调试状态下,可以使用TRACE在调试器的输出窗口中显示信息,但是不使用MFC或者脱离IDE编程环境的时候,调试信息需要显示在文本框中时,没有很方便的函数直接将调试信息输出,此时需要自己写一个函数来方便输出,有两种方法,一种是存粹使用C语言的方式,一种是接用MFC的CString类,代码如下所示:下面的代码是使用C语言方式,不借助MFC将调试信息输出到IDE的调试窗口中下面代码是使用MFC中的CString类,将调试信息输出到文本控件

2022-06-19 20:56:03 704

原创 windows10安装Altera下载电缆方法

某些情况下,安装完Quartus II后,下载电缆驱动没有能够安装上,有可能是Quartus II的版本太低导致不支持win10,此时需要手动安装,具体步骤如下:首先插好USB Blaster下载电缆,使用“windows窗口键+R”,调出运行窗口,输入devmgmt.msc如下图所示,点击确定按钮:此时会打开设备管理器,可以看到USB-Blaster上面有一个叹号,说明驱动未安装,点击右键,选择更新驱动程序,如下图所示:然后选择浏览我的电脑以查找驱动程序:选择浏览按钮,选择驱动程序位置:单击下一页

2022-06-15 10:48:56 478

原创 C语言判断文件夹是否存在,不存在则创建

windows下需要包含头文件需要用到access函数判断文件夹是否存在,mkdir创建文件夹,示例代码如下:_access函数原型如下:int _access(const char *path,int mode);其中mode含义如下:0,检查文件或者文件夹是否存在2,检查文件或者文件夹是否只写4,检查文件或者文件夹是否只读6,检查文件或者文件夹是否可读写这个函数主要作用是用来判断文件或者文件夹读写属性的,它没有区分文件和文件夹的功能,因此使用它来判断文件夹是否存在并不合...

2022-06-13 18:20:06 3759

原创 使用QT编写MODBUS-TCP服务器与客户端程序

这个系列文章的主要目的还是要记录我熟悉QT编程的一个过程,同时也可以让其他开始使用QT编程的人有一个参考,少走些弯路。基于以上目的,我就从我所擅长的工业数据采集入手,用QT编写一个和数据采集有关的程序。在工业数据采集领域,MODBUS是一种应用广泛的总线协议,非常适合应用在低速采集的领域,早期的MODBUS协议只支持串口,后来发展出基于以太网口的MODBUS-TCP协议,我最终要用QT实现的,就是一个MODBUS-TCP服务器,以及与之通讯的MODBUS-TCP客户端。协议相关资料请看MODBUS-TCP

2022-06-13 16:20:42 6655 2

转载 使用dd命令备份数据等操作(包括整盘复制)

dd 的主要选项:指定数字的地方若以下列字符结尾乘以相应的数字:b=512, c=1, k=1024, w=2, xm=number mif=file #输入文件名,缺省为标准输入。of=file #输出文件名,缺省为标准输出。ibs=bytes #一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。obs=bytes #一次写 bytes 个字节(即一个块大小为 bytes 个字节)。bs=bytes #同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。cbs=

2022-06-06 16:08:04 3038

原创 ubuntu1604安装远程桌面与配置QT记录

参考这个连接:Windows 远程桌面连接Ubuntu操作以及各种问题解决结果执行到这一步的时候死活装不上:sudo apt-get install xubuntu-desktop报告一大堆错误,都是Failed to fetch ……相关的结果刚开始搜索出来的都说是需要修改DNS成8.8.8.8之类的方法。修改后仍然不行后来想到可能是安装源的问题,后来把安装源参考这个链接,改成了阿里云的:ubuntu 16.04 LTS source.list阿里云ubuntu1604安装源注意修改完/

2022-06-06 13:31:12 435

原创 QT多线程TCP服务器客户端通讯编程

在QT网络编程中,服务器往往需要和多个客户端保持连接,因此,我在熟悉多线程编程过程中,在TCP服务每接收到一个客户端连接请求,就新建一个线程。客户端也是在新建的线程中维护的。程序的思路如下:程序使用了非模式对话框来分别显示服务器和客户端,默认情况下客户端使用127.0.0.1这个本地IP来和自己进程内的服务器通讯。服务器在监听到新客户端的连接请求后新建对话框以及一个线程与客户端通讯,客户端建立连接成功后会将自己的线程ID发送给服务器,服务器接收到数据后将自己的线程ID返回给客户端。客户端断开连接后会自动

2022-06-05 10:17:02 4891 1

原创 使用QT编写TCP服务器与客户端程序

在学习了霍亚飞的《Qt Creator快速入门(第3版)》后,参考“18.4 TCP”中的示例程序,编写了一个在同一个工程中实现服务器与客户端的习作程序,变量名命名方式和示例程序大体一致,程序实现了TCP客户端发送文件,服务器接收文件的功能,用到了QFile,QDataStream,QTcpServer,QTcpSocket等QT类。本文记录了编写过程,主要目的就是为了熟悉QT下TCP编程。首先新建工程,选择“Qt Widget Application”,工程名称是“TcpFileServerClient

2022-06-02 16:31:48 5379

转载 Google 人机验证(reCaptcha)无法显示解决方案(可解决大多数 CSP 问题)(转)

想注册opencore,结果因为无法访问谷歌的原因导致出不来人机验证,试了N多方法,最后找到这个有效:https://blog.azurezeng.com/recaptcha-use-in-china/前言:为了防止机器人攻击,国外很多网站都使用了 Google reCaptcha 验证码。reCaptcha 对于国外用户非常的友好,但是… 对于国内用户就不怎么友好了。究其原因,则是国内网络全线屏蔽 Google 服务,导致 reCaptcha 完全加载不出来。这样,国内玩家就无法在对应的网站进行下一步

2022-05-19 19:35:44 24124 2

原创 MODBUS-TCP协议简介与编程流程图

  本文主要目的是为了写一个简单的MODBUS-TCP服务器-客户端程序而记录的知识点,里面包含了编程所需要的必要背景知识和协议解析流程图。MODBUS基本数据类型  MODBUS有四种基本数据类型:  **离散量输入:**客户端只能读取它,由服务器提供,占1个比特位,可以传输现实中的开关量输入,比如接近开关的通断信息等。  **线圈:**客户端可以可写入和读取,服务器根据客户端的设定改变其值,占1个比特位,可以控制现实中的继电器的吸合与断开。  **输入寄存器:**客户端只能读取它,最小单位是1

2022-05-02 12:47:42 7785

原创 Linux PCI驱动编写

  这几天将以前为内核2.6写的驱动移植到了4.1下,在这里记录一下过程,以及从头整理一下linux下pci驱动的编写方法。  以前的驱动没有使用到linux下的probe方法,在4.1内核下成功编译后,一直无法进入中断,因此参考ch36x的驱动,重新写了驱动初始化部分,当应用层的程序可以调用驱动正确读回采集卡数据的时候,那份欣喜与满足感是难以言表的。驱动模块初始化相关函数定义  PCI驱动和其它linux驱动一样,需要定义init和exit两个函数作为加载模块的入口点和卸载模块的出口点,可以使用mo

2022-04-30 19:47:23 2459 1

原创 基于Qt的数据采集编程-开始

为什么选择QT  一直以来,我都是用MFC编写产品示例和测试程序,因为windows驱动和动态库都使用Visual C++编写,所以很自然的就延续使用了其中的MFC,但是近年来国家提倡技术要掌握在自己手里,所以对于开源代码的需求大幅增加,很多用户都要用到开源的编程环境,另外有的用户直接就要在Linux系统下对产品进行测试,这时候MFC就完全不够用了。也想过使用C#编写Linux下的测试程序,但是一方面Linux下使用C#还需要安装插件,另一方面在linux下用C#开发的也不多,经过多方比较,最终选择了QT

2022-04-23 06:07:30 1427 2

数据采集卡通过MQTT上传数据到百度云

本资源是EM9636数据上传百度云的源代码文件,读者可以使用此资源在linux系统下编译可执行文件,将EM9636采集到的数据上传到百度云上,里面配置好了makefile,只要编译环境构建完毕,直接运行make命令就可以编译成可执行文件。

2022-12-21

MFC高速二维曲线控件示例程序,VC2017编译通过

在数据采集中,有的时候需要将采集数据以曲线的方式显示出来,MFC并没有提供容易使用的曲线显示控件,好在有好心人写了ChartCtrl控件,可以很方便的绘制曲线。 由于年代比较久远,使用VC2017的时候会有些警告,但是都不影响使用。接下来我会使用一个示例来说明控件的使用方法,同时也为我自己以后使用的时候能够快速回忆起用法。 老版本的VC使用stdafx.h作为预编译头,VC2017使用pch.h作为预编译头,为了方便,干脆取消掉预编译头:属性->c/c++->预编译头->不使用预编译头。在程序中我用到了控件的曲线自适应功能,会根据数据自动的将曲线填满整个空间空间,在静止状态下,可以拉框放大局部曲线。 曲线控件使用Custom Control作为载体,在窗体上放置Custom Control后,需要设置stytle属性为0x52010000,相当于WS_CHILD(0x40000000L) | WS_VISIBLE(0x10000000L) |WS_CLIPCHILDREN(0x02000000L) | WS_TABSTOP(0x00010000L) 值得一提的是WS_CLIPCHILD

2022-06-25

Altera USB Blaster 下载电缆 win10 驱动

有数字签名,可以支持win10

2022-06-18

modbus支持功能码3和16的服务器客户端程序

习作,里面还有些bug,可以实现基本的收发命令,有256个保持寄存器。

2022-06-13

QT多线程TCP服务器客户端通讯程序

在QT网络编程中,服务器往往需要和多个客户端保持连接,因此,我在熟悉多线程编程过程中,在TCP服务每接收到一个客户端连接请求,就新建一个线程。客户端也是在新建的线程中维护的。 程序的思路如下: 程序使用了非模式对话框来分别显示服务器和客户端,默认情况下客户端使用127.0.0.1这个本地IP来和自己进程内的服务器通讯。服务器在监听到新客户端的连接请求后新建对话框以及一个线程与客户端通讯,客户端建立连接成功后会将自己的线程ID发送给服务器,服务器接收到数据后将自己的线程ID返回给客户端。客户端断开连接后会自动将对话框关闭以及释放资源。服务器端在客户端断开后,也会自动将对话框关闭。

2022-06-05

QT编写的TCP服务端和客户端传输文件的源程序

学习了霍亚飞的《Qt Creator快速入门(第3版)》后,参考“18.4 TCP”中的示例程序,编写了一个在同一个工程中实现服务器与客户端的习作程序,变量名命名方式和示例程序大体一致,程序实现了TCP客户端发送文件,服务器接收文件的功能,用到了QFile,QDataStream,QTcpServer,QTcpSocket等QT类。

2022-06-02

MODBUS协议中文版带目录

我加上了目录,方便阅读

2022-05-02

J-link4.08 可以支持山寨

测试USB3.0开发板,之前下载了最新版本的J-LINK驱动,结果告诉我硬件有问题,后来搜索到这个,解压后直接运行就可以使用eclipse调试了

2018-02-13

msvc1.52(微软最后的16位编译器)

定制CE的logo时候用的,有人上传过,但是竟然分成两个文件,而且有一个文件巨大,这坑挖的,让我折腾半天才找到这第二个文件,我合成一个压缩包,算是让大家省点事吧

2009-08-03

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

TA关注的人

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