自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 qt和window抓包程序

发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。接收帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。前 6 位 1 和 0 交替,最后的两个连续的 1 表示告诉接收端适配器:“帧信息要来了,准备接收”。发送帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。

2023-11-21 12:26:21 247

原创 QT 搭建opencv 环境

qt 搭建opencv环境

2023-11-21 09:33:18 519

原创 字符设备驱动开发

驱动程序运行在内核空间中,给出的地址也是在内核空间中的地址,运行在用户空间下的用户程序即使拿到这个地址,也不能访问内核空间。这时,我们需要使用到copy_to_user()函数,将要传递的内容从内核空间拷贝到用户空间,用户程序再访问用户空间中的该内容即可。下面举个实例,来详细介绍如何在用户空间和内核空间中通过传递地址参数的方法来传递复杂参数。同理,也有从用户空间向内核空间拷贝的函数copy_from_user(),原型如下。关于用户空间和内核空间的更详细解释,可以参考我的这篇博客。

2023-11-14 11:02:32 334

原创 qmake cmake mingw32-make make介绍

make,nmake,mingw32-make:是自动化编译工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。makefile在一些简单的工程完全可以人工手写,但是当工程非常大的时候,手写makefile是非常麻烦的,如果换了个平台makefile又要重新修改。makefile是自动化编译时,实现编译需要的规则文件,可通过make,nmake,mingw32-make依据它来批处理编译。自动化生成makefile编译规则文件。

2023-08-11 11:36:53 349

原创 QT QtXlsx安装使用

QtXlsx是一个可以读取和写入Excel文件的库。它不需要Microsoft Excel,可以在Qt5支持的任何平台上使用。官网地址:https://platform.activestate.com/tangxing806/ActivePerl-5.28/distributions。源码地址:https://github.com/dbzhang800/qtxlsxwriter。进入到QtXlsxWriter-master源代码里,找到.pro的文件夹。须知安装QtXlsx时,需要下载perl。

2023-08-11 11:07:47 1840

原创 Opencv学习

一、常用函数介绍1. Mat imread(const string& filename,int flags=IMREAD_COLOR);说明:加载图片 默认是加载RGB 三Channel

2023-08-11 10:44:32 157

原创 QT生成Debug和Release发布版后,运行exe缺少dll问题

在QT Creator 里点击‘项目’,然后再构建步骤局域局域栏里,点击‘添加Build步骤’,选择‘Custom Process Step’,然后在命令行输入‘windeployqt’,参数行输入‘%{buildDir}/%{CurrentBuild:Type}/%{CurrentProject:Name}.exe’,Working directory输入‘%{buildDir}’后,重新编译,会发现在exe下出现很多dll,将此文件拷贝到其他电脑也能运行。

2023-08-07 17:30:46 1214

转载 modbus tcp 协议

请求:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L 字节长度 寄存器值(13+寄存器数量×2)如:向起始地址为0x0000,数量为0x0001的寄存器写入数据,数据长度为0x02,数据为0x000F。请求:MBAP 功能码 起始地址H 起始地址L 输出数量H 输出数量L 字节长度 输出值H 输出值L。请求:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L(共12字节)请求:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L(共12字节)

2022-11-19 09:05:31 2465

原创 c++类型与c#类型匹配

//c++:HANDLE(void*)----c#:System.IntPtr//c++:Byte(unsignedchar)----c#:System.Byte//c++:SHORT(short)----c#:System.Int16//c++:WORD(unsignedshort)...

2022-05-19 18:45:54 808

原创 wpf 注意点

1.在样式中,如果给样式的TargetType赋值(如TargetType="{x:TypeTextBox}"),而没有给样式x:Key分配值,那么该样式就会应用与所有TargetType设置的类型(TextBox),x:Key会隐式设置与TargetType一样的值(“{x:Type TextBox}”);如果,在样式中给x:Key设值后(“{x:Type TextBox}”除外),该样式就不会应用在所有TargetType设置的类型上了。2.在ItemControl控件中,ItemSource和Da

2022-05-04 22:17:32 408

转载 c#序列化总结

(一)序列化方式.net framework的类库中提供了三个可以用于序列化和反序列化的类,分别为BinaryFormatter、SoapFormatter和XmlSerializer。BinaryFormatter的命名空间为System.Runtime.Serialization.Formatters.Binary,位于程序集mscorlib.dll中。SoapFormatter的命名空间为System.Runtime.Serialization.Formatters.Soap,位于程序集...

2022-04-22 21:54:27 2027

原创 wpf 学习(一)

1.xaml引用名称空间:<xmlns:x="clr-namespace:System.Windows.Controls;"/>引用名称空间和程序集<xmlns:x="clr-namespace:System.Windows.Controls; assembly=PresentationFramework"/>x:表示映射前缀,clr-namespace是命名空间前缀,assembly引用程序集前缀. xaml各命名空间属性的含义 ...

2022-04-19 14:32:50 1416

原创 c++ 重载、重写、隐藏

1 重载与覆盖成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。 覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual关键字。隐藏(1)不同的范围(分别位于派生类与基类);(2)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基...

2020-09-08 11:59:30 152

原创 使用gsoap介绍

gsoap soap函数说明soap_begin_count() 该函数在再次soap结构中一些在该请求中要用到和可能用到的量进行清零/初始化,最主要是的设置xml结构的mode信息默认情况下是soap->mode=0x20008;soap_connect()函数中把原来的soap->mode进行了修改,这样在下次调用,同时对填入soap->buf的字符进行计数。soap->bufidx统计的是http协议部分的字符数。 -soap_envelope_begin_ou...

2020-07-02 18:45:51 1590 2

原创 wcf配置文件介绍和例子

<?xml version="1.0" encoding="utf-8" ?><configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <system.serviceModel> <!--The bindings configuration .

2020-06-28 18:03:48 265

原创 wsdl文档说明

那下面该wsdl文件进行说明:<?xml version="1.0" encoding="UTF-8"?><definitions name="control" targetNamespace="http://192.168.14.194:8888" xmlns:tns="http://192.168.14.194:8888" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-E...

2020-06-11 19:39:13 348

原创 c++ webservices搭建

一、准备工具 安装gsoap二、gsoap使用1. soapcpp2使用参数如下(soapcpp2是将.h文件解析生成.wsdl c/c++文件,工客户端服务端使用):-1 使用SOAP 1.1进行编译-2 使用SOAP 1.1进行编译-C 只生成客户端代码-S 只生成服务端代码-T generate server autorem -test code-L 不生成soapClientLib/soapServerL...

2020-06-11 18:21:45 699

原创 shell脚本

上面我们了解了linux基本命令,现在开始学习shell脚本首先,shell脚本文件后缀名为‘.sh’一、变量变量分为全局环境变量和局部环境变量,系统有一些定义好的全局环境变量。m_var=abc #这里定义一个局部变量名为m_var且值为abc,注意定义变量赋值时“=”两边不允许有空格export m_var #使用export 将m_var局部变量编程全局变量二、使用变量(引用...

2019-12-09 16:43:08 172

原创 socket编程深入了解

1. 使用socket建立套接字描述符时,内核实际上会注册一个socket结构体,可以在内核源码里找到,socket结构体定义如下:struct socket{ socket_state state; unsigned long flags; const struct proto_ops *ops; struct fasync_struct *fas...

2019-09-14 22:31:58 159

原创 c++读取windows指定注册表中的值

  在程序中使用注册表,不外乎创建、打开、读取、设置、删除这五个常规操作,(要想获得更详细的资料可以参考Visual Studio6.0帮助目录中MSDN Library Visual Studio6.0|Platform SDK|Window Base Services|General Library|Registry条目)。下面我们就来关注这五个接口函数的用法:  一、 创建键RegCrea...

2019-08-01 21:22:39 2032

原创 正则表达式

正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex、regexp、RE、regexps、regexes、regexen。 正则表达式是一种文本模式。正则表达式是强大、便捷、高效的文本处理工具。正则表达式本身,加上如同一门袖珍编程语言的通用模式表示法(general pattern notation),赋予使用者描述和...

2019-08-01 21:19:15 441

原创 理解c函数执行完后,释放内存

在C语言中,函数仅仅是一个小的功能块,函数执行完后(也就是函数功能完成),会根据调用约定来释放,该执行函数所占用的内存资源。这里的资源就是执行该函数所占用的栈内存。当函数执行完后仅仅就是释放该函数所用的占用的资源。...

2019-06-21 19:37:10 4888

原创 c语言switch case及变量作用域和生存期

先说switch case陷阱#include<iostream>using namespace std;int main(int argc, char *argv[]){ int a =0; switch(a) { case 0: int b=1;cout<<b<<endl;break; ...

2019-04-23 14:35:46 2953

原创 c++throw放在函数后说明和inline关键字说明

首先说明try catch throw是c++异常处理机制。throw放在方法后面,说明该方法是否抛出异常,是什么类型异常。例子如下:class B{public: void fun() throw(){ throw string("ex");} void fun1() throw();};void B::...

2019-04-10 19:04:30 495

原创 c++ 派生类转基类,基类转派生类以及dynamic_cast说明

实例class base{ public: base() {} ~base() {} virtual void fun() { cout&lt;&lt;"base fun"&lt;&lt;endl; }};class driver:public base{ publ...

2019-03-15 19:05:37 3417

转载 linux core文件

1.设置core文件大小列出所有资源的限制: ulimit -aulimit -a.png或者查看core file size: ulimit -ccore file size:unlimited:core文件的大小不受限制0:程序出错时不会产生core文件1024:代表1024k,core文件超出该大小就不能生成了设置core文件大小: ulimit -c fileSi...

2019-03-06 14:26:44 337

原创 linux ulimit作用

ulimit主要是用来限制进程对资源的使用情况的,它支持各种类型的限制,常用的有:内核文件的大小限制进程数据块的大小限制Shell进程创建文件大小限制可加锁内存大小限制常驻内存集的大小限制打开文件句柄数限制分配堆栈的最大大小限制CPU占用时间限制用户最大可用的进程数限制Shell进程所能使用的最大虚拟内存限制ulimit使用的基本格式为:ulimit [o...

2019-03-06 14:24:53 561

原创 使用fsck修复系统文件错误

一、问题描述     redhat系统,由于电脑未正常关机,在重启过程中出现/dev/VolGroup00/LogVo100出现文件系统错误,如下:Checking filesystems /dev/VolGroup00/LogVol00 contains a file system with errors, check forced./dev/VolGroup00/LogVol00:...

2019-02-12 14:57:29 3738

转载 c语言enum类型使用

在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是:#define MON 1#define TUE 2#define WED 3#define THU 4#define FRI 5#define SAT 6#define SUN 7在此,我们定义一种新的数据类型,希望它能完成同样的工作。这种...

2019-01-09 14:02:14 21169

原创 c++ input/output stream

一、input/output stream 关系二、类说明1) istream(输入流)2)ostream(输出流)3)ios4) iostream(继承istream和ostream)        内部没有方法5)fstream(继承iostream)6)ifstream(继承istream)7)ofstream(继承ostream)...

2018-12-26 13:21:36 3655

原创 linux 常用命令和目录介绍

一、目录/:根目录root:root用户的主目录home:存放所有普通用户的目录bin:binary,存放各种所有用户通用的可执行文件(命令)sbin:super binary,存放管理员使用的可执行文件(命令)etc:存放各种系统配置文件,比如:/etc/shadow存放的是用户密码信息dev:device,存放各种设备文件,如:外接usb设备等boot:存放系统...

2018-12-23 11:33:55 271

原创 c++ 11新特性

下面是总结的c++ 11新特性例子#include &lt;memory&gt;#include &lt;map&gt;#include &lt;vector&gt;#include &lt;deque&gt;#include &lt;string&gt;#include &lt;iostream&gt;#include &lt;iomanip&gt;#include &

2018-12-21 20:30:38 239

原创 c++ 和c#区别

一、编译过程    c++中编译过程为:预处理阶段(宏替换、文件包含、条件编译#if等)、编译阶段、汇编成目标文件、链接成可执行文件。    c#中没有宏,编译过程如下:    1.C#通过编译器(CSC)生成程序集(dll/exe),程序集内部是由微软中间语言(MSIL)组成。在这个过程中,CSC会检查错误,看是否符合C#的语言规范。    2.当运行程序集的时候,公共语言运行时...

2018-11-29 17:36:15 31618 3

原创 socket tcp和udp

1. tcp是一种面向连接的、可靠的、基于字节流的运输层通信协议。用8位字节表示的数据流然后TCP把数据流分割成适当长度的报文段(受到链路层最大传送单元(MTU)的限制)。tcp为了保证不发生丢包,就给每一个字节一个序号,同时序号也保证数据的顺序,然后接手端对成功收到的字节发送一个ack确认;如果在合理的时间内没有发送ack确认信息,那么tcp会将数据重传。tcp会校验数据是否有错。2. ud...

2018-10-30 10:03:29 460

原创 c++虚函数

        每个含有虚函数的类有一张虚函数表(vtbl),虚函数表类似数组,其表中每一项是一个虚函数的地址。也就是说虚函数表的每一项是一个指向虚函数的指针。         没有虚函数的类是不会有虚函数表的。        无论类中包含多少各虚函数,都只有一个虚函数表指针和一张虚函数表,之时表的大小变化。如果是A继承B,B继承C,B和C都有虚函数,那么类A仍然只有一个虚函数指针和一个虚...

2018-10-16 22:36:48 330

转载 deviceNet主/从站介绍

1. DeviceNet主从站特点介绍在一个DeviceNet网络中,主站是负责集中管理I/O数据的设备,并具备未连接报文管理UCMM(Unconnected Message Manager)功能。从站节点则是执行特定功能并将自己的I/O数据传送给主站的设备,可以无UCMM功能,但必须支持预定义主从显式报文连接。(1)DeviceNet从站特性DeviceNet从站在网络中拥有唯一的节点...

2018-07-25 14:05:15 7107

转载 linux 串口通信详解

1、串口的操作1.1打开:fd = open("/dev/ttySAC1", O_RDWR | O_NOCTTY | O_NDELAY);              O_RDWR 读写方式打开;              O_NOCTTY 不允许进程管理串口(不太理解,一般都选上);              O_NDELAY 非阻塞(默认为阻塞,打开后也可以使用fcntl()重新设置)1.2写入...

2018-05-18 19:34:12 2129 1

转载 linux 驱动访问外设备的方法

 1. 操作IO端口(申请,访问,释放):  I/O 端口是驱动用来和很多设备通讯的方法。(1)申请I/O 端口:  在驱动还没独占设备之前,不应对端口进行操作。内核提供了一个注册接口,以允许驱动声明其需要的端口:/* request_region告诉内核:要使用first开始的n个端口。参数name为设备名。如果请求成功返回值是非NULL;否则无法使用需要的端口(/proc/i...

2018-05-17 18:06:47 1130

原创 pci驱动开发详解

一、在了解pic启动开发前,作为开发人员需了解以下内核结构体:struct pci_device_id { __u32 vendor, device;/* Vendor and device ID or PCI_ANY_ID*/ __u32 subvendor, subdevice;/* Subsystem ID's or PCI_ANY_ID */ __u32 clas...

2018-05-11 18:40:36 13050

转载 linux 阻塞socket与非阻塞socket

阻塞socket和非阻塞socket的区别读操作对于阻塞的socket/recv,当socket的接收缓冲区中没有数据时,read调用会一直阻塞住,直到有数据到来才返回。当socket缓冲区中的数据量小于期望读取的数据量时,返回实际读取的字节数。当sockt的接收缓冲区中的数据大于期望读取的字节数时,读取期望读取的字节数,返回实际读取的长度。对于非阻塞socket而言,socket的接收缓冲区中有...

2018-03-23 13:28:01 4064

空空如也

空空如也

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

TA关注的人

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