- 博客(42)
- 资源 (2)
- 收藏
- 关注
原创 MODBUS TCP/IP(三)中文版-(完)
附 录A. 客户机和服务器应用指南 本部分的注释不应当作与客户机和服务器的任何特殊的应用捆绑起来。但是,当应用多厂商系统和网关去安装MODBUS设备,遵从这些内容将大大减小综合的“疑难”。 下面的软件结构假设在熟悉BSD Sockets 服务器接口基础上, 正如用于UNIX and Windows NT。
2009-05-20 22:02:00
1635
原创 MODBUS TCP/IP(二)中文版
4. 协议结构 本部分阐述了通过MODBUS/TCP网络携带的MODBUS请求和或响应封装的一般格式。必须注意到请求和响应本体(从功能代码到数据部分的末尾)的结构和其它MODBUS变量具有完全相同的版面格式和含义,如: MODBUS 串行端口 - ASCI
2009-05-20 22:01:00
3433
原创 MODBUS TCP/IP(一)中文版
1.该规范的发展概况 原始版本1997年9月3日作为公共评论的草案。 再版1999年3月29日,即修订版1.0。 没有大的技术改动,仅作了补充说明。增加了附录A和B作为对一些常用执行问题的回应。 该MODBUS/TCP规范在万维网上公开发行。它表明开发者的意愿是把它作为工业自动化领域具有互用性的
2009-05-20 10:32:00
3505
转载 解析“extern”
解析“extern”1、 声明外部变量现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。下面举一个简单的例子。创建一个工程,里面含有A.cpp和B.cpp两个简单的C++源文件://A.cpp int i; void main(){
2008-08-20 12:03:00
290
原创 关于头文件AfxTempl.h数组模板类简介
CArray m_Array;MFC中定义的数组模板类,其有两个参数:第一个参数:数组元素的类型,该例中是CA1,即m_Array是CA1数组;第二个参数:一般有两种选择,一种选择与第一个参数类型相同,即传值。第二种选择是第一个参数类型的引用,即传引用。建议:对于内置类型,如double,第二个参数传值和传引用均可;而对于用户自定义类型,如本例中的类CA1,最好采取传引用方式。
2008-08-06 19:15:00
524
原创 C++标准库函数strtok的功能
函数用途:得到字符串s1中首次出现s2中的字符前的子字符串函数原型:char *strtok(char *s1,const char *s2);输入参数:该函数将s1中首次出现s2中字符的位置置为NULL,因此会破坏s1字符串。该函数一般用于分解s1字符串为用特定分隔符分隔的多个字符串,s2一般设置为s1中的分隔字符,比如空格,逗号等,例如将一条自然英文语句分解为单词。返回值:字符串s1中首次出现
2007-08-02 21:11:00
997
1
原创 开发Pro*C/C++应用程序的步骤
第一步:根据应用需求编写预编译源程序(.pc),在该预编译源程序中包含了内嵌SQL语句和PL/SQL语句;第二步:使用 Pro*C/C++工具程序(proc)将内嵌SQL语句和PL/SQL语句转换为对SQLLIB库函数的调用,并生成C/C++源代码文件(*.c或.cpp);第三步:使用C/C++工具编译C/C++源文件,生成目标代码文件(.obj);第四步:使用C/C++工具链
2007-07-11 15:02:00
517
转载 C++的static关键字
作者:韩耀旭 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#in
2007-07-05 15:01:00
427
转载 深入浅出C++之private/public/protected
下面这个问题摘自论坛的一个帖子:已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3:类P和类Q是类O的派生类,其继承方式如下所示: class P : protected O {…}; class Q : public O {…};关于方法F1的描述中正确的是___(34)___;关于方法F2韵描述中正确的是___(35)___;关于方法F3的描述中正确
2007-07-04 10:52:00
412
转载 #ifndef、#def、#endif等宏的含义
一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当
2007-06-27 10:47:00
411
转载 C++中的Singleton模式
用C++实现Singleton的思路是把构造函数设为私有,通过静态函数GetInstance()获得对象的唯一实例. 见到很多例子都是使用指针来动态创建这个唯一实例,像这样: Singleton* GetInstance(){ if (instance == NULL){ instance = new Singleton(); } return i
2007-06-11 20:14:00
378
转载 什么是Web 服务?
Web 服务是一种可以用来解决跨网络应用集成问题的开发模式,这种模式为实现“软件作为服务”提供了技术保障。而“软件作为服务”实质上是一种提供软件服务的机制,这种机制可以在网络上暴露可编程接口,并通过这些接口来共享站点开放出来的功能。从技术角度来讲,Web 服务实现了最广泛的应用软件集成,弥补了传统软件开发模型的限制。Web 服务产生之前,在网络上提供对象服务通常要采用DCOM(Distr
2007-05-21 14:00:00
1614
转载 C/C++ 跨平台I/O操作技巧
译者序:文章的内容很简单,也不见得完全正确。跨平台I/O需要考虑的事情远非这篇文章的篇幅所能描述,这里介绍的只是一些最基本,最简单的需要注意的事情。以下是翻译的正文:如果你正在写从文件或网络读写数据的跨平台C/C++代码,那么你必须明白有些问题是因语言,编译器,平台而不同的。 主要的问题是数据对齐,填充,类型大小,字节顺序和默认状态char是否有符号。对齐特定机器上,特定的数据被对齐于
2007-05-21 13:33:00
413
转载 为什么C++赋值运算符重载函数不能被继承?
为什么C++赋值运算符重载函数不能被继承?(zz:http://www.cqumzh.cn/topic_show.php?tid=134570)这个问题曾经困扰过我一阵子。请先看一下下面的源代码:class A1{public: int operator=(int a) { return 8; } int
2007-05-14 14:35:00
2687
3
原创 ox7c938fea指令引用的ox63305858内存,该内存不能为written是什么原因?
内存不能为“read”或“written”的解决方案 有些人运行程序的时候会弹出该内存不能为“read”的错误提示。希望以下文章能对大家有所帮助。 使用Windows操作系统的人有时会遇到这样的错误信息,运行某些程序的时候,有时会出现内存错误的提示,然后该程序会自动关闭或点击后关闭,严重的会无法关闭。 “0x????????”指令引用的“0x????????”内存。该内存不能为“read”。 “0
2007-05-13 21:01:00
5077
2
原创 C++中的子对象
当一个类的成员是某一个类的对象时,该对象就为子对象。子对象实际就是对象成员。例如:class A { ……. } class B { public: ……. private: A a;……… };其中, a是子对象,它是A类的对象作为B类的成员。在类中出现了子对象或对象成员时,该类的构造函数要包含对子对象的初始化,通
2007-05-10 21:37:00
1702
原创 C++中的堆对象
#include iostream> using namespace std;class Tree { public: Tree(int height) //this-> { cout"tree object is creating"endl; this->height = height; } ~Tree() {
2007-05-10 09:18:00
413
原创 C++中函数调用返回自定义类型对象(一)
class ca {}; ca f() { ca x; return x; } int main() {ca y= f();return 0;} 中间过程是有临时对象产生的 这个过程相当于: ca类型的临时变量 = f(); ca y = ca类型的临时
2007-04-21 21:59:00
1172
转载 c++里关于cerr,clog,cout三者的区别
c++里关于cerr,clog,cout三者的区别:cerr(无缓冲标准错误)----------没有缓冲,发送给它的内容立即被输出clog(缓冲标准错误)------------有缓冲,缓冲区满时输出cout--------------------------------标准输出三个都是ostream类定义的输出流对象.cout是在终端显示器输出,cout流在内存中对应开辟了一个缓冲区,用来存放
2007-04-20 16:49:00
1606
2
原创 如何用C++向量vector生成二维数组
如何用C++向量vector生成二维数组呢?请看如下程序:#include iostream>#include vector>#include iomanip>using namespace std;int main(){ int i, j, m, //行数 n; //列数 cout "input value for m,n:"; cin>>m>>n; /
2007-04-18 14:12:00
8307
2
转载 C++异常处理(二)
关键字 1、 try 2、 catch 3、 throw其中关键字try表示定义一个受到监控、受到保护的程序代码块;关键字catch与try遥相呼应,定义当try block(受监控的程序块)出现异常时,错误处理的程序模块,并且每个catch block都带一个参数(类似于函数定义时的数那样),这个参数的数据类型用于异常对象的数据类型进行匹配;而throw则是检测到一个异常错误发生后向外
2007-04-17 21:06:00
771
转载 C++异常处理(一)
// Normal program statements...try{// Execute some code that might throw an exception.}catch( CException* e ){// Handle the exception here.// "e" contains information about the exception.e->Delete()
2007-04-16 22:39:00
476
转载 C++:memset ,memcpy 和strcpy 的区别
#include "memory.h"memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ 或‘/0;例:char a[100];memset(a, /0, sizeof(a)); memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;例:char a[100],b[50]; memcpy(b, a, sizeof(b)
2007-04-11 13:58:00
601
原创 C++中的mutable
MSDN:mutable member-variable-declaration:This keyword can only be applied to non-static and non-const data members of a class. If a data member is declared mutable, then it is legal to assign a v
2007-04-11 11:05:00
506
原创 c++ new字符串的一点心得
c++中,new的用法很灵活,这里进行了简单的总结:1. new() 分配这种类型的一个大小的内存空间,并以括号中的值来初始化这个变量;2. new[] 分配这种类型的n个大小的内存空间,并用默认构造函数来初始化这些变量; #includeiostream>#includecstring>using namespace std;int main(){ //char* p=
2007-04-09 22:17:00
3557
1
原创 IBM T60/X60安装win2000指南(XP与此同)
准备工作: 准备好驱动,如果机器原带有XP系统,直接备份c:/drivers、c:/IBMTOOLS两个目录;1、开机按F1进BIOS,Config->Serial ATA->改为Compatible;2、按一般流程安装好2000;3、将准备好的驱动拷到机器上的其他分区,例如D:/ ;4、安装SATA驱动: (1)、运行d:/IBMTOOLS/DRIVERS/IMSM/PREPARE/I
2007-04-07 13:31:00
2451
原创 图解Ghost教程
即使你拥有最先进的电脑,采用传统的方法,Windows的安装速度仍然是令人头痛的!有没有什么重装系统的简便方法呢?当然有,Ghost就是其中的一种选择。 Norton Ghost的文件比较小,只要一个主文件Ghost.exe(Ghost 2002仅600多KB)就可工作,一张启动盘就可以装下。由于是纯DOS程序,建议做张启动盘并将Norton Ghost放在软盘上。下面,我们就一
2007-04-06 22:16:00
826
转载 c++字符串操作
bcmp(比较内存内容) 相关函数 bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp表头文件 #include定义函数 int bcmp ( const void *s1,const void * s2,int n);函数说明 bcmp()用来比较s1和s2所指的内存区间前n个字节,若参数n为0,则返回0。返回值 若参数s1 和s2 所
2007-04-05 10:52:00
757
转载 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
C 风格(C-style)强制转型如下: (T) expression // cast expression to be of type T 函数风格(Function-style)强制转型使用这样的语法: T(expression) // cast expression to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这
2007-04-04 23:09:00
696
原创 指针数组和数组指针
有关数组指针和指针数组容易混淆,本文举例说明两者的区别,并加以分析。基本概念: -------------------指针---------------------int a=1;int *p=&a;----------------指针的指针------------------int **p2p=&p;-----------------简单数组-------------------
2007-04-01 20:20:00
432
原创 何为dump?
今天在日志输出文件中看到dump,不知其为何物,于是乎去问百度,结果百度知道也显示出一种“为之奈何”的姿态 ,经查阅n多资料,才略知一二:dump可以理解为将内存中的信息转储到别的地方(比如磁盘);导出内存信息,如核心模式下的调试信息,一般是看不见的,可以使用它导出来;通常应翻译成“卸载”或者“倾卸”:指在程序执行中将内存一块区域中的内容原封不动地写入一个文件,供人检查。总而言之,言而总之
2007-03-29 11:37:00
452
1
转载 类成员函数指针的一点体悟
类的成员函数分为两种,一种是静态函数,另外一种是非静态函数。例如: class X{public: static void display(); bool getValue();};display()为静态函数,getValue即为非静态函数。两种函数在使用的时候是不一样的。静态函数可以直接由类名来调用,而非静态函数则必须通过某一个对象来调用,例如:
2007-03-27 22:29:00
525
原创 关于静态成员变量和静态成员函数的一点心得(续)
上次的code可以做如下改动: #include iostream>using namespace std;class sha{ static int a; int b;public: void set(int i,int j) { //a=i; b=j;
2007-03-27 10:10:00
404
原创 关于静态成员变量和静态成员函数的一点心得
要点: 1.静态成员变量必须在类的声明外进行初始化,一般在类的cpp文件初始化(在任何的大括号的外面);编译器不会自动对其初始化;2.静态成员须用类名直接访问,不能有对象进行访问;3.静态成员可以由静态函数访问,也可以由非静态函数访问;但是,静态函数只能访问静态成员,不能访问非静态成员。欢迎大家批评指正...http://blog.youkuaiyun.com/pbmichael/
2007-03-27 10:02:00
534
转载 创建函数指针到 C++ 成员函数
/* * Compile options needed: None */ #include iostream>using namespace std;class Data{private: int y; static int x;public: void SetData(int value) {y = value; return;}; int GetData() {return
2007-03-26 22:29:00
359
原创 如何让函数指针指向非全局的函数?
#include iostream> using namespace std; class colors // 设置具体函数的类 { public: void show_color_rose(){cout "red" endl;} void show_color_lily(){cout "white" endl;} }; class flower { public: void colo
2007-03-26 21:44:00
349
原创 C++指针探讨 (三) 成员函数指针
C语言的指针相当的灵活方便,但也相当容易出错。许多C语言初学者,甚至C语言老鸟都很容易栽倒在C语言的指针下。但不可否认的是,指针在C语言中的位置极其重要,也许可以偏激一点的来说:没有指针的C程序不是真正的C程序。 然而C++的指针却常常给我一种束手束脚的感觉。C++比C语言有更严格的静态类型,更加强调类型安全,强调编译时检查。因此,对于C语言中最容易错用的指针,更是不能放过:C++的指针被分成
2007-03-26 21:19:00
457
转载 C++指针探讨 (二) 函数指针
在C/C++中,数据指针是最直接,也最常用的,因此,理解起来也比较容易。而函数指针,作为运行时动态调用(比如回调函数 CallBack Function)是一种常见的,而且是很好用的手段。 我们先简单的说一下函数指针。(这一部份没什么价值,纯是为了引出下一节的内容) 2 常规函数指针 void(*fp)(); fp 是一个典型的函数指针,用于指向无参数,无返回
2007-03-26 21:07:00
614
转载 C++指针探讨 (一)数据指针
指针,在C/C++语言中一直是很受宠的;几乎找不到一个不使用指针的C/C++应用。用于存储数据和程序的地址,这是指针的基本功能。用于指向整型数,用整数指针(int*);指向浮点数用浮点数指针(float*);指向结构,用对应的结构指针(struct xxx *);指向任意地址,用无类型指针(void*)。 有时候,我们需要一些通用的指针。在C语言当中,(void*) 可以代表一切;但是在C+
2007-03-26 14:06:00
403
转载 c++中const关键字使用详解
关于C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性。在网上搜寻相关主题,发现大多数文章雷同,而关键地方并不是很清楚。在网络资料,参考书的基础上,结合本人的一些体会总结如下,期望对大家有所帮助: 一 const基础下面四个定义语句是大多数书籍讲解const关键字都会用到的,[1]const int* a = &b;[2]int const *a = &b;[3]
2007-03-25 10:51:00
370
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人