- 博客(61)
- 资源 (30)
- 收藏
- 关注
原创 OPC:关于GUID以及CLSID的理解
当初微软设计com规范的时候,有两种选择来保证用户的设计的com组件可以全球唯一:第一种是采用和Internet地址一样的管理方式,成立一个管理机构,用户如果想开发一个COM组件的时候需要向该机构提出申请,并交一定的费用。第二种是发明一种算法,每次都能产生一个全球唯一的COM组件标识符。微软采用第二种方法,并发明了一种算法,这种算法用GUID(Globally Unique Identi...
2019-07-10 22:16:58
4006
1
原创 OPC:客户端开发——应用WTclient.dll使用手册部分中文版
WinTECH软件快速客户端开发DLL(WTclient),提供了一种应用API方便地将定制应用和任何OPC Server相结合的方式。所有COM和OPC的细节均由DLL来处理,这使得一个应用可以轻松的从服务器获取数据点,而不用关心接口后的实际完成过程。 这些DLL可以方便和已有的或者新的应用相结合。其中提供了面向OPC1.0和OPC2.0数据访问标准所需的全部OPC接口,同时也提供了浏览接口和连...
2019-06-25 17:24:38
1884
原创 OPC:简单知识介绍和系统配置
一、OPC工作原理OPC采用客户端/服务器模式,在客户端和服务器端都各自定义了统一的符合OPC标准的接口,此接口具有不变特性。接口明确定义了客户同服务器间的COM方式的通信机制,它是连接客户同服务器的桥梁和纽带。由设备厂家或第三方开发出现场设备的访问接口(驱动及总线协议),并将其封装到OPC服务器中(硬件驱动模块)。客户通过OPC标准接口实现与服务器的数据交换。当OPC客户端与服务器在同一台...
2019-06-23 17:49:16
12572
原创 OPC:服务器开发(二)——WTOPCSvr使用手册中文版
WTOPCsvr.dll是以DLL形式提供的OPC服务器开发工具,支持OPC DA 1.0和2.0规范,同时支持AE 1.0规范。通过WTOPCsvr.dll,您只需调用里面的几个API函数就可以快速开发出您自己的OPC服务器。使用Visual Basic语言的开发者也能使用WTOPCsvr.dll开发OPC服务器。以下是DLL的API声明.明确地定义了DLL用于返回给服务器程序的调用返回...
2019-06-23 10:29:47
3299
转载 知识点:vs2017 git 操作重置、还原、挑拣对比
工具 :vs2017 git 操作背景:本地与远程分支同步操作:还原、挑拣、重置--hard 、重置--mixed分支:本地1、本地2、origin\本地1 基本操作1:分支:本地2-add something like //testthis function 提交2:checkout 本地1 后,本地2分支合并入本地1分支,同步\origin。3:本地1分支add so...
2019-05-14 09:33:53
4017
原创 C++:用memset初始化数组
1、初始化数组定义完数组之后有三种初始化方式int A[20]={0};int A[20]; for(i=0;i<sizeof(A)/A[0];i++) A[i]=0;int A[20]; memset(A, 0, sizeof(A));此外对于全局变量和静态变量在定义之后会由编译器自动初始化为02、关于memset初始化与赋值问题memset是C/C++提供的函数初始化函...
2019-04-25 15:28:42
21714
原创 知识点:gitee+VS2017进行版本管理和写作开发
Git是当下进行版本管理和多人写作开发的常用方式。本人利用VS2017自带的git管理工具,将代码传到码云当中,在此记录一下操作方法以及遇到的各种问题一、Git和Gitee的简单介绍git是一个本地的版本管理器,用于代码的多版本管理。关于git的介绍有很多,比较丰富的是廖雪峰老师的介绍有兴趣的同学可以去详细学习。而Gitee和Github是远端的版本管理网站。有了这些网站,我们可以以开源或者...
2019-04-18 10:57:10
1582
原创 C++:switch提示“控制传输跳过的实例化”
使用switch的时候在case下边实例化对象的时候会提示“控制传输跳过的实例化”。如下解决方法很简单,将case下的语句加上"{}"即可,也就是写成 switch (m_nCardType) { case MODBUS485_MASTER:{ CModBus485MasterDlg MDlg; MDlg.DoModal(); break; } default:...
2019-03-20 09:41:05
34617
10
原创 MFC:数据有效机制DDV
MFC提供了类CDataExchage 来实现对话框类与控件交换(DDX),该类还提供了数据有效机制(DDV)。 DDV_MaxChars void AFXAPI DDV_MaxChars( CDataExchange* pDX, CString const& value, int nChars ); 参数: pDX 指向CDataExchange...
2019-03-19 11:23:21
776
原创 MFC:关于链表的使用
1. 使用typedef的链表定义方式typedef CTypedPtrList <CObList, CPSProp *> CPSList这是一个typedef的重命名,用CPSList代替CTypedPtrList <CObList, CPSProp *>。CTypedPtrList 是MFC的一个模板类,CObList和CPSProp是它的两个输入参数类型。真...
2019-03-11 15:28:03
2433
原创 MFC:关于MFC框架的一系列基本知识和简单理解集合[持续更新中]
一、引用#include“stdafx.h"的意义在cpp文件中的头文件引用位置,我们往往会发现这样的语句(而且最好是在其他的应用文件之前)#include"stdafx.h"#include"..."stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展)。stdafx.h中没有函数库,只是定义了一些环境参数...
2019-03-11 15:21:49
354
转载 C++: C++ 11新特性——nullptr使用、常数表达式constexpr、类型推导auto和decltype
nullptr nullptr 出现的目的是为了替代 NULL。在某种意义上来说,传统 C++ 会把 NULL、0 视为同一种东西,这取决于编译器如何定义 NULL,有些编译器会将 NULL 定义为 ((void*)0),有些则会直接将其定义为&nb...
2019-03-05 10:52:30
274
原创 C++:关于一段STL泛型编程程序的简单理解
最近看到了这么一段代码,趁机补习了一遍C++STL泛型编程的知识,于此记录一下。首先代码如下//(1)定义了一个Item类型的结构体typedef struct ITEM { unsigned int i; unsigned int j;} Item;//(2)声明了一个C++泛型结构体,类型名为A_less template &amp;lt;class T&amp;gt; s...
2019-03-02 12:56:28
445
转载 C++:binary_function与unary_function使用详解
/****************************************************************************** aurhor: &amp;amp;nbsp; &amp;amp;nbsp;StefanChen* date: &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;20170121* b
2019-03-02 12:43:40
1714
转载 C++:operator关键字(重载操作符)
原博客:http://www.cnblogs.com/speedmancs/archive/2011/06/09/2076873.htmloperator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。&amp;nbsp;这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只...
2019-03-02 12:37:00
225
原创 C++:条件运算符
一、运算符1. 条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回另外两个表达式中的一个。&amp;amp;amp;amp;amp;amp;lt;表达式1&amp;amp;amp;amp;amp;amp;gt;?&amp;amp;amp;amp;amp;amp;lt;表达式2&amp;amp;amp;amp;amp;amp;gt;:&amp;amp;amp;amp;amp;a
2019-02-27 09:30:06
1815
原创 MFC:针对对话框的一些操作
一、屏蔽对话框的ESC和Enter的响应新建的对话框弹出后,按ESC和Enter键,对话框就会退出(或隐藏)。有的时候我们需要屏蔽这样的动作,需要在自己写的对话框类中添加这样的代码:以CUpdateParametersDialog类为例,在.h文件中加入BOOL PreTranslateMessage(MSG *pMsg);//至于是public、还是protected好像是都可以在.c...
2019-02-13 17:47:51
325
原创 C++:数组形参的传递
数组有两个特性:不允许拷贝:无法以值传递的方式使用数组形参使用数组时通常都会转换为指针:当我们为函数传递一个数组时,实际上传递的是指向数组首元素的指针。传参的方法当下有一个数组int j[2]={0,1},我们自写了一个函数 void FindSomeOne(),要求将数组参数传进去。有以下两种方式(在函数内部使用时,Point++即可实现指针的移动)void FindSom...
2019-01-15 09:59:57
2696
原创 OPC:服务器开发(一)如何开发OPC Server
一、什么是OPCOPC (OLE for Process Control——用于过程控制的OLE)是基于Microsoft公司的DNA(Distributed Internet Application)构架和COM(Component Object Model)技术的一个工业标准接口,是根据易于扩展性而设计的。二、OPC的用途OPC主要适用于过程控制和制造自动化等应用领域。 OPC是以OLE...
2019-01-07 21:39:13
15143
原创 Matlab:利用VS2017执行cpp文件
一、环境配置Matlab是不能直接编译Cpp文件的,需要借助计算机上已有的编译器。我的Matlab版本是R2016a,计算机上安装的是VS2017社区版。首先要确保matlab能够找到VS2017的编译器,在命令行窗口输入mex -setup,之后提示:错误使用 mex未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w64 ...
2019-01-07 08:49:46
2471
5
原创 C++:关于库项目的生成和使用
我们经常在程序(尤其是一些年代比较久,比如说早期的库文件里)里见到这样的代码#ifdef __cplusplus extern &amp;amp;amp;amp;amp;amp;quot;C&amp;amp;amp;amp;amp;amp;quot; { #endif...#ifdef __cplusplus }#endif这个宏#ifdef __cplusplus意思是说,如果该文件是Cpp文件,extern &amp;amp;amp;a
2019-01-02 15:04:07
704
原创 MFC:写一小段获得当前应用程序所在路径的程序
char filename[_MAX_PATH]; int num; if (GetModuleFileName(NULL, filename, _MAX_PATH) != 0) { m_Path.Format(&amp;quot;%s&amp;quot;, filename); num = m_Path.ReverseFind('\\'); m_Path = ...
2018-12-27 21:14:23
361
原创 MFC:内存泄漏引发的思考
1、循环内创建变量(只要不是动态开辟的变量),不会增加内存使用如下,这段程序并不会随着每次循环不断实例化a、pTempDataDI、TempDataDI3个变量而导致内存增加。因为VC/VS这些编译器认为,每次实例化a、pTempDataDI、TempDataDI都是对应的同一片内存。 while (1) { CDataDI *pTempDataDI = (CDataDI *) m_D...
2018-12-10 22:11:18
365
原创 C++:关联式容器Map
Map每个元素都是 key/value pair ,其中key是排序准则的基准。每个key只能出现一次,不允许重复。Map也可被视为一种关联式数组,也就是“索引可为任意类型”的数组。以具体的两个例子解释什么是map实例一#include "pch.h"#include &lt;map&gt;#include &lt;iostream&gt;#include &lt;string&
2018-12-04 21:32:04
226
原创 MFC:网络通讯遇到的几个问题
一、udp的recvfrom无法接收数据这个问题不是程序的问题,毕竟调试助手是收不到包的,应该把防火墙关闭然后重新测试一下程序。二、sin_addr.s_addr和sin_addr.S_un.S_addr看到第一行了没,S_un.S_addr 是s_addr的宏定义,这两个是一个东西(注意大小写呦,MMP~~)三、借助IPHLPAPI函数添加/删除临时Ip4地址增加的IP是临时的,当系统重新启动或者发生其它的PNP事件的时候这个IP就不存在了,比如将网卡禁用,然后启用,就会发现之前调用函数AddI
2018-11-24 17:48:28
1276
1
原创 C++:关于类以及h/cpp文件的一些实用知识
一、VC编译原理解决重定义问题,首先要明白VC的编译原理:VC只编译cpp文件,这些cpp文件构成将来的exe;当VC编译A.cpp文件的时候,如果遇到了语句#include &quot;B.h&quot;,实质上是将&quot;B.h&quot;文件中的代码全部“复制”到A.cpp中,然后再继续编译A.cpp。当在B.h文件中定义全局变量a等,即使使用了避免文件重复包含的方法(如下节提到的两种方法),是不能避免“A.cpp中...
2018-11-21 17:22:34
1473
原创 MFC:Stack around the “tWindowString” was corrupted(堆栈损坏,即内存溢出)
最近调试程序的时候出现了这样一个问题其中关键性的内容有两个:出现error的位置和error信息。可以看到错误位置在mytree.cpp的377行,问题原因是Run-Time Check Failure #2 - Stack around the “tWindowString” was corrupted。翻译过来就是运行时检查失败#2 - “tWindowString”周围的堆栈已损坏。所...
2018-11-20 20:57:24
978
原创 C++:吐槽Win7专业版和Win7旗舰版对C++/程序的影响
今天遇到了一个很奇怪的问题,我的电脑是win7+64专业版的,在VC6.0上调试MFC程序,最后程序关闭的时候,弹出下述警告但是在Release版本不会出现这个问题,最关键的是在同学电脑(Win7+64旗舰版)无论是Debug还是Release都没问题,弄得我差点重装系统。后来,进入提示中的filecore.cpp(这是VC6.0软件自己的文件)的295行,程序如下void CFile::...
2018-11-19 17:37:33
667
原创 VB:启用宏故障
打开一个很老的exle文件,启用宏提示各种错误,将解决方法和解决顺序记录下来1.编译错误:若要在64位系统上使用,则必须更新此项目中的代码。请检查并更新Declare语句,然后用PtrSafe属性标记它们。出错的原文是这样写的Private Declare Sub CoFreeUnusedLibraries Lib "OLE32" ()提示已经说的很清楚了,在64位excle上使用Dec...
2018-11-17 22:21:14
2363
原创 MFC:常见的不同类型相互转化的方法
一、LPARAM类型转化为CString类型类型变量LPARAMlParamCStringstr1.将变量lParam的值赋予str的方法:①使用构造函数CString str((char*)lParam); ②使用运算符重载str=(char*)lParam;//注意CString str=(char*)lParam;不会成功③使...
2018-11-16 12:19:22
957
原创 MFC:将工程从VC6.0工程升级到VS2017所遇到的代码不兼容问题集合
一、VS2017下使用MFC无法调用函数Htmlelp1.问题描述在VS2017上开始的时候程序是这么写的:#include &amp;amp;amp;quot;htmlhelp.h&amp;amp;amp;quot;...//通过HtmlHelp调用帮助文件(.chm)的程序代码如下: HtmlHelp(NULL, (LPCSTR)helpFile, HH_DISPLAY_TOPIC, 0);结果报错如下(改段程序在VC6.0上不会报错的):E...
2018-11-16 10:15:19
5413
2
原创 知识点:通过ODBC操作Orcale数据库的说明
本文通过ODBC方式连接Oracle数据库,使用MFC进行数据库操作的关键函数。详细介绍了配置ODBC的方法和其中遇到的各项困难,以及最终几个的关键函数
2018-11-06 23:16:14
1553
原创 MFC:配置项目属性解决的各种error问题
首先编译提示error C1010的错误fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;stdafx.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;”?上述问题定位在MemDB.c,解决方法是在解决方案管理器中查找&amp
2018-10-25 20:11:33
2428
原创 知识点:VA番茄助手不能用,提示:all instance of the license"*" are in use .VA will be disabled
实验室中有两台电脑,当在第二台电脑上安装好VC++6.0和番茄助手后,打开编译器提示All instances of the lincense “ren” are in use. VA will be disabled.点击确定,然后敲代码时发现番茄助手没有起作用,通过网上搜索发现这是因为局域网内已经由其他人使用过了相同的注册表名称,导致番茄助手的注册出了问题。解决方法很简单:按下“Win...
2018-10-22 15:09:52
2500
2
原创 MFC:通过代码简单理解进程间的通讯机制——共享内存
下面用共享映射文件的方式实现进程间通信,代码可以运行。一、浅理解&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;nbsp;每个进程有自己独立的空间,一个进程无法访问其他进程的数据。就好像两个是互不干涉的个体,想让它们进行通信(
2018-10-17 12:38:43
3354
1
原创 Matlab:关于二进制到字节的转化函数
1. bitshift 函数描述:bitshift函数实现数据位移操作。用法:bitshift(A,B)函数第二个参数为正,则对A的二进制数左移。第二个参数为负,则右移。bitshift(A,n,N),N表示移位后的数据最多只有N为,若超过N位,多余的位将被丢弃。举例:&gt;&gt;bitshift(255,1)ans =5102. bitset函数描述:b...
2018-10-13 20:14:57
3746
原创 知识点:十点掌握MarkDown(平时书写足够)
1.首行缩进格式(不要忘了分号):1.1 半方大的空白&amp;amp;amp;amp;amp;amp;amp;ensp; 或 &amp;amp;amp;amp;amp;amp;amp;#8194;1.2 全方大的空白&amp;amp;amp;amp;amp;amp;amp;emsp; 或 &amp;amp;amp;amp;amp;amp;amp;#8195;1.3 不断行的空白&amp;amp;amp;amp;
2018-09-27 16:12:35
2824
OPC2.0DLL安装程序.rar
2019-06-25
Window32SDK函数手册
2019-02-21
Win32 新编 API大全
2019-02-21
Matlabr2016调用VS2017C++编译器的配置文件
2019-01-07
AStyle_3.1_windows 官网下载的很好用的软件
2018-09-18
Visuial Studio 的Artistic Style 3.1插件
2018-08-18
MatrikonOPCSimulation OPC通讯仿真软件
2018-08-06
Windows平台西门子PLC仿真软件(含modscan32、modsim32、虚拟串口)
2018-08-06
Matlab自动获取可用真实串口的函数
2018-08-02
32位Orcale ODBC驱动
2018-05-17
64位Orcle ODBC驱动
2018-05-17
Qt12个入门级程序代码程序(下)
2018-01-23
Qt编写的类似Simulink仿真界面的小程序
2018-01-23
Qt编写的多线程局域网通信软件(含文件传输)
2018-01-23
VC6.0的使用工具(AddOpen插件、字体/颜色设置、番茄助手)
2018-01-23
OpenLiveWriter安装包
2017-09-27
msdn2017的桌面快捷方式
2017-09-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人