- 博客(45)
- 资源 (1)
- 收藏
- 关注
原创 C#调用C++接口 -- delegate实现函数指针
C++接口定义//回调函数定义typedef void (CALLBACK *PDEVICE_FIND_CALLBACK_V40)(const SADP_DEVICE_INFO_V40 *lpDeviceInfo, void *pUserData);//接口定义CSADP_API BOOL CALLBACK SADP_Start_V40(PDEVICE_FIND_CALLBACK_V40 pDeviceFindCallBack, int bInstallNPF = 0, void* pU...
2020-12-16 12:47:30
1093
1
原创 C# IntPtr转struct
DEVICE_INFO 结构体名称var temp = Marshal.PtrToStructure(ptr, typeof(DEVICE_INFO));DEVICE_INFO struDeviceInfo = (DEVICE_INFO)temp;
2020-12-16 00:59:48
1265
原创 Gflags排查内存泄露步骤
一:安装windbgwindbg同级目录下有gflags.exe二:cmd进入gflags.exe所在文件夹搜索gflags.exe所在文件夹 打开cmd进入gflags.exe所在文件夹 cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x86三:设置符号文件路径环境变量设置符号文件(pdb文件)路径到环境变量_NT_SYMBOL_PATH Set _NT_SYMBOL_PATH=...
2020-12-13 20:51:27
1706
原创 集成海康威视Sadp SDK实现设置设备参数配置
下面将介绍集成SadpSDK的接口调用流程,以及使用到的接口功能说明。如有疑问欢迎留言探讨。设置设备参数配置设置接口SADP_SetDeviceConfig的第一个参数是设备的序列号,第二个参数是命令码,第三个参数是命令码对应输入参数结构体,第四个参数是命令码对应输入参数结构体大小,第五个参数是命令码对应输出参数结构体,第五个参数是命令码对应输出参数结构体大小(注:一定要先搜索到设备才能对设备进行设置参数配置)示例代码#inc...
2020-12-13 20:35:21
2349
2
原创 集成海康威视Sadp SDK实现获取设备参数配置
下面将介绍集成SadpSDK的接口调用流程,以及使用到的接口功能说明。如有疑问欢迎留言探讨。获取设备参数配置 获取接口SADP_GetDeviceConfig的第一个参数是设备的序列号,第二个参数是命令码,第三个参数是命令码对应输入参数结构体,第四个参数是命令码对应输入参数结构体大小,第五个参数是命令码对应输出参数结构体,第五个参数是命令码对应输出参数结构体大小(注:一定要先搜索到设备才能对设备进行获取参数配置)示例代码#in...
2020-12-13 20:32:49
2267
原创 集成海康威视Sadp SDK实现重置密码
下面将介绍集成SadpSDK的接口调用流程,以及使用到的接口功能说明。如有疑问欢迎留言探讨。图中橘黄色部分为程序外部操作。 判断设备支持的重置方式 导出导入文件重置密码,设备基本上都支持重置密码或者重置密码方式2 ,由于重置密码方式2方案更安全所以如果支持的话优先选择使用重置密码方式2 SADP_DEVICE_INFO结构体中 (bySupport & 0x...
2020-12-13 20:28:16
5043
1
原创 集成海康威视Sadp SDK实现修改设备网络参数
修改网络参数 修改网络参数接口SADP_ModifyDeviceNetParam_V40的第一个参数是设备的Mac地址,第二个参数是设备admin用户的密码,第三个参数是网络参数结构体,第四个参数是...
2020-12-13 20:11:01
3864
1
原创 Android开发环境搭建
安装JDK 下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8- downloads.html 安装JDK 配置环境变量: 我的电脑-->属性-->高级系统设置-->环境变量 创建JAVA_HOME:值是你的刚刚jdk的安装目录,比如 C:\Pro...
2020-06-26 00:10:52
265
原创 集成海康威视Sadp SDK实现设备激活
下面将介绍集成SadpSDK的接口调用流程,以及使用到的接口功能说明。如有疑问欢迎留言探讨。 激活设备 激活接口 SADP_ActivateDevice 的第一个参数是设备的序列号,第二个参数是设备admin用户的密码 (注:一定要先搜索到设备才能对设备进行激活) #include <stdio.h>#inc...
2020-01-09 14:14:57
4067
17
原创 Android studio报错module not specified解决方案
报错如下: 解决办法: File --> Project Structure --> SDK Location --> JDK location 选择一个最新的jdk版本,点击apply,点击ok。 然后等待下载Grandle下载完再进入就可以选择Module了...
2019-12-09 15:39:38
18568
7
转载 \r,\n,\r\n的区别
他们间的区别其实是个回车换行的问题 回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别。 符号ASCII码意义 \n10 换行 \r13 ...
2019-12-05 22:18:00
263
原创 Windbg配置符号文件路径
在使用windbg前需要配置一下符号文件的加载路径,也就是pdb文件的所在路径,配置方法如下: File -> Symbol File Path 1.在Symbol path中输入:SRV*D:\SystemSymbols*http://msdl.microsoft.com/download/symbols;D:\WindbgSymbo...
2019-12-05 10:20:33
2342
原创 集成海康威视Sadp SDK实现局域网设备搜索
下面将介绍集成SadpSDK的接口调用流程,以及使用到的接口功能说明。如有疑问欢迎留言探讨。 启动SADP服务 启动接口 SADP_Start_V40 的第一个参数是 设备发现回调函数。当SDK搜索到设备时会通过 设备发现回调函数 将设备信息回调给上层。回调函数中每次只回调一个设备信息,信息类型有 设备上线,设备更新,设备下线等。 释放SADP资源 ...
2019-12-04 21:55:59
6689
28
原创 SadpTool 海康设备网络搜索工具
海康官网下载地址:https://www.hikvision.com/cn/download_more_393.html
2019-12-03 17:03:51
7094
1
原创 error C4996: 'strcpy': This function or variable may be unsafe
在vs中使用strcpy函数编译时报下图错误解决办法: 项目右键 -> 属性 -> 配置属性 -> C/C++ -> 预处理器-> 预处理器定义 添加_CRT_SECURE_NO_WARNINGS宏...
2019-12-02 19:25:28
369
原创 VS 配置头文件目录与导入.lib库文件
配置头文件目录 右键项目 -> 属性 -> C/C++ -> 常规 -> 附加包含目录,如下图: 导入.lib库文件 右键项目 -> 属性 -> 链接器 -> 常规 -> 附加库目录,如下图: 右键项目 -> 属性 -> 链接器 ->...
2019-12-01 21:44:20
965
原创 C/C++ sleep函数使用方法
Windows #include <windows.h> //需要的头文件int main(void){ Sleep(1000); //单位,毫秒 (在VC中Sleep中的第一个英文字符为大写的"S")} Linux #include <unistd.h> //需要的头文件int main(void){ ...
2019-12-01 21:17:48
5151
原创 C# DateTime转化为时间格式字符串
Debug.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));//输出结果: 2019-12-01 15:17:56.774// C#中有严格的大小写限定: yyyy-MM-dd HH:mm:ss.fff // yyyy:代表年份// MM:代表月份// dd:代表天// ...
2019-12-01 15:15:35
1608
转载 windbg如何保存dump文件
WinDBG产生dump 文件的命令是 .dump ,可以选择不同的参数来生成不同类型的dump文件。选项(1): /m命令行示例:.dump /m C:\dumps\myapp.dmp注解: 缺省选项,生成标准的minidump, 转储文件通常较小,便于在网络上通过邮件或其他方式传输。 这种文件的信息量较少,只包含系统信息、加载的模块(DLL...
2019-11-28 20:48:17
3155
原创 strerror(errno) 获取Linux系统错误码
#include <string.h>#include <errno.h> #include <stdio.h>int main(int argc, char ** argv){ int i = 0; for(i = 0; i < 132; i++) printf("errno.%d is: %s\r\n", i...
2019-11-21 19:38:40
1785
1
原创 C# 日志写文件 日志按天存储在本地txt
/// /// 写入日志 /// public void WriteLogToFile(string szLog) { string szDate = System.DateTime.Now.Date.ToString("yyyy-MM-dd"); StreamWrit...
2019-11-19 20:52:18
1115
原创 数据库增删改命令 分类笔记
注一下所有命令都在postgresql下验证过数据库1创建create database database_name;2删除drop database database_name;3重命名alter database database_name rename to new_database_name;表1创建create table
2016-10-19 15:12:01
458
原创 常用的SQL语句笔记
1 select 语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。 SQL语法: SELECT column_name,column_name FROM table_name;2 distinct 在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。DISTINCT关键词用于返回唯一不同的值。 SQL语法:
2016-10-19 15:00:56
430
原创 c++primer笔记--3.6多维数组
1 c++语言中没有多维数组,通常所说的多维数组其实是数组的数组。2 数组的每一个维度对应一个下标运算符。3 要使用范围for循环处理多维数组,除了最内层的循环外,其它所有循环的控制变量都应该是引用类型。4 int ia[2][3] = {0}; for (auto row : ia) // 除了最内层,都要用auto &row : ia引用类型
2016-09-05 00:41:53
455
原创 c++primer笔记--3.5数组
1 与vector不同的是,数组的大小确定不变,不能随意向数组中增加元素。因为数组的大小固定,因此数组在运行时的性能较好,但相应的会损失一些灵活性。2 如果不清楚元素的确切个数,请使用vector。3 数组是一种复合类型。维度说明了数组中元素的个数,因此必须大于0。数组中元素个数也属于数组类型的一部分,编译的时候维度必须是已知的,维度必须是一个常量表达式。4 和内置类型的变量一样,如果
2016-09-05 00:38:58
377
原创 c++primer笔记--3.4迭代器
1 类型于指针类型,迭代器也提供了对对象的间接访问,就迭代器而言,其对象是容器中的元素或者string中的字符。2 迭代器有有效和无效之分,这一点和指针差不多,有效的迭代器或者指向某个元素,或者指向容器中尾元素的下一个位置,其它情况都属于无效。3 和指针不一样的是,获取迭代器不是使用取地址符,而是使用两个成员函数begin()和end()4 begin()函数返回指向第一个元素(或第一
2016-09-02 22:47:28
559
原创 c++primer笔记--3.3标准库类型vector
1 标准库类型vector(容器)表示对象的集合,其中所有对象的类型都相同。vector是一个类模板2 编译器根据模板创建类或函数的过程称为实例化。当使用模板时,必须指明实例化为何种类型。3 vector是模板而非类型,由vector生成的类型必须包含vector中元素的类型。例如vector4 vector中存放的是对象,引用不是对象,所以不存在包含引用的vector5 c++标
2016-09-02 00:00:20
733
原创 c++primer笔记--3.2标准库类型string
1 标准库类型string表示可变长的字符序列,使用string类型必须先包含string头文件。2 如何初始化类的对象是由类本身决定的。 string s1; // 默认初始化,s1是一个空字符串 string s2 = s1; // s2是s1的副本 string s3 = "hello";
2016-09-01 22:45:34
374
原创 c++primer笔记--2.6自定义数据类型
1 很多新手程序员经常忘记了在类定义的最后加上分号2 c++11规定,可以为数据成员提供个类内初始值。3 头文件一旦改变,相关的源文件必须重新编译以获取更新过的声明4 #define 指令把一个名字设定为预处理变量。5 预处理变量无视c++语言中关于作用域的规则。
2016-09-01 01:25:28
428
原创 c++primer笔记--2.5处理类型
1 类型别名是一个名字,它是某种类型的同义词。2 有两种方法可用于定义类型别名,typedef 和 using typedef double wages; // wages是double的同义词 using SI = Sales_item; // SI是Sales_item的同义词3 auto让编译器通过初始值来推算变量的类型。显然,auto定义的变量必须有初始值
2016-09-01 01:22:50
317
原创 c++primer笔记--2.4const限定符
1 const对象一旦创建后其值就不能再改变,所以const对象必须初始化。2 默认状态下,const对象仅在文件内有效。3 编译器将在编译过程中把用到const变量的地方都替换成对应的值。(有点像宏定义)4 可以把引用绑定到const对象上,我们称之为对常量的引用。5 const int ci = 1024; const int &r1 = ci; // 正确,与对象
2016-09-01 01:18:40
404
原创 c++primer笔记--2.3复合类型
1 复合类型是指基于其它类型定义的类型。引用和指针是复合类型2 引用为对象起了另外一个名字。3 引用必须初始化。一旦初始化完成,引用将和它的初始值对象一直绑定在一起,无法令引用重新绑定到另外一个对象。4 引用即别名,引用并非对象,相反的,它只是为一个已经存在的对象所起的另一个名字5 引用本身不是对象,所以不能定义引用的引用。6 引用的类型要和与之绑定对象严格匹配,引用只能绑定在
2016-09-01 01:15:53
306
原创 c++primer笔记--2.2变量
1 变量提供一个具名的,可供程序操作的存储空间。2 c++中每个变量都有其数据类型,数据类型决定着变量所占内存空间大小和布局方式,该空间能存储的值的范围,以及变量能参与的运算。3 变量定义:类型说明符 + 变量名4 通常情况下,对象是指一块能存储数据并具有某种类型的内存空间。5 int a = 1,b = a;可以这样用,变量一经定义马上可以使用。6 初始化不是赋值,初始化的含
2016-09-01 01:14:36
366
原创 c++primer笔记--2.1基本内置类型
1 基本内置类型 = 算术类型 + 空类型2 算术类型包括:布尔,字符,整型,浮点型3 算术类型分为两类 = 整型 + 浮点型4 基本的字符类型是char,一个char的空间应该确保可以存放机器基本字符集中任意字符对应的数字值。一个char的大小和一个机器字节一样。5 wchar_t(宽字符 16位) 用于确保可以存放机器最大扩展字符集6 char16_t,char32_t为u
2016-08-30 19:45:02
537
原创 AAC ADTS头详解
本文主要参考:http://blog.youkuaiyun.com/andyhuabing/article/details/40983423参考的那篇博客里有非常详细的ADTS头介绍.讲述的非常全面.我写这篇博客的目的就是记录一下aac数据写文件的方法,之后的工作中经常会用到.这次是为了验证aac编码出来的数据是否正确.一开始在网上找了了个函数,如下:FILE *fp;
2016-08-12 20:26:35
1460
原创 wav文件头格式详解
wav文件头格式详解首先先声明几个变量:int file_size; //文件大小int channel; //声道数int sample_rate; //采样率int bit_rate; //比特率int sample_bit; //每个采样点的位数int data_s
2016-08-10 21:32:20
13319
原创 E319: Sorry, the command is not available in this version: syntax on " 自动语法高亮
当我把以前使用的.vimrc配置文件拷贝到我的新系统家目录下,实用vi时提示了一个如下的错误: E319: Sorry, the command is not available in this version: syntax on " 自动语法高亮解决办法: 在终端输入:sudo apt-get install vim安
2016-08-09 21:31:27
2648
原创 unable to run mksdcard sdk tool
新安装的ubuntu16.04系统,在安装android studio的过程中,当进行到下载安装sdk时报了个如下的错误: unable to run mksdcard sdk tool解决办法: 只需要在终端输入:sudo apt-get install lib32stdc++6 就OK啦
2016-08-09 21:17:35
1084
vi的配置文件
2016-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人