Win32下的几种串口通信编程
要完成串口通信, 在32位模式下, 一般说来有以下四种方法:
1.以文件方式打开串口:
这里使用的是Win32 API 函数, 所以无论在BCB或VC下都可以实现.具体的函数的意义可以参考Win32 API 的帮助.这里有一个易于使用的BCB下的类, 可以方便的使用串口.
下面给出简要说明:
(1) 应用CreateFile() 来初始化串口
FhFileComm=CreateFile( ...
在C++ Builder中取得命令行参数
用过C语言编程的人都知道,在DOS下的编程可以通过main函数的参数取得命令行参数的个数以及每个参数的字符串,例如
int main(int argv ,char *argv[])
{
…
}
则命令行参数是argc个,这些参数分别存储在argv[0]~argv[argc-1]中,其中argv[0]是可执行文件的名字(含路径),那么Windows程序是怎么取得命令行参数的呢?用C语 ...
获取网卡的相关信息
////////////////////////////////////////////////////////////////
//运行本程序需要安装Microsoft Platform SDK .这个可以去MS下载
// http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
//作者:安静
//mail: aweiken@163.com
//10:56 2002-1-31 start
//14:44 2002-2-2 fix some bug.
//////////////////// ...
软件接口的历史和未来
软件的未来其实在很大程度上要指望软件接口的前景如何。我们知道,计算机世界里的接口这两个字具有两种众所周知的含义:其一是指软件本身的狭义“接口”,比如各种软件开发API等。其二则指的是人与软件之间的交互界面。我们把这种人-软件之间的接口称作“用户界面”,也就是“UI”。
这里要讨论的前一种定义: 软件不同部分 ...
在程序中重启自己的一种方法
在工程.cpp文件(Project1.cpp)中加入:
#include "Unit1.h"
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TfrmMain), &frmMain);
Application->Run();
}
catch (Exception &exception)
{ ...
vcl库函数
1.内存分配
2.文件操作
3.磁盘目录管理
4.字符串操作
5.类型转换
6.时间和日期管理
一.BORLAND C++ BUILDER VCL的内存管理函数
1. AllocMem
在队中分配指定字节的内存块,并将分配的每一个字节初始化为 0.函数原型如下:
void * __fastcall AllocMem(Cardinal Size);
2. SysFreeMem
释放所指定的内存块.函数原型如下:
int __f ...
libevent源码浅析(二):libevent的定时器的实现
在libevent中定时器的实现是通过基于最小堆的优先级队列来实现的。
对于这两个数据结构比较陌生的可以去翻算法导论的6.5节。
主要的源码都在min_heap.c中。
我们先来看主要的数据结构:
typedef struct min_heap
{
struct event** p;
unsigned n, a;
} min_heap_t;
在这个数据结构中 p也就是整个优先级队列 ...
Qt学习之路(24):QPainter
多些大家对我的支持啊!有朋友也提出,前面的几节有关event的教程缺少例子。因为event比较难做例子,也就没有去写,只是把大概写了一下。今天带来的是新的部分,有关Qt的2D绘图。这部分不像前面的内容,还是比较好理解的啦!所以,例子也会增加出来。
有人问豆子拿Qt做什么,其实,豆子就是在做一个Qt的画图程序,努力朝着P ...
Qt学习之路(32):一个简易画板的实现(Graphics View)
本文配套源码
这一次将介绍如何使用Graphics View来实现前面所说的画板。前面说了很多有关Graphics View的好话,但是没有具体的实例很难说究竟好在哪里。现在我们就把前面的内容使用Graphics View重新实现一下,大家可以对比一下看有什么区别。
同前面相似的内容就不再叙述了,我们从上次代码的基础上进行修改,以便符合我 ...
Qt学习之路(22):事件过滤器
Qt创建了QEvent事件对象之后,会调用QObject的event()函数做事件的分发。有时候,你可能需要在调用event()函数之前做一些另外的操作,比如,对话框上某些组件可能并不需要响应回车按下的事件,此时,你就需要重新定义组件的event()函数。如果组件很多,就需要重写很多次 event()函数,这显然没有效率。为此,你可以使用一个 ...
Qt学习之路(29):绘图设备
绘图设备是指继承QPainterDevice的子类。Qt一共提供了四个这样的类,分别是QPixmap、QBitmap、QImage和 QPicture。其中,QPixmap专门为图像在屏幕上的显示做了优化,而QBitmap是QPixmap的一个子类,它的色深限定为1,你可以使用 QPixmap的isQBitmap()函数来确定这个QPixmap是不是一个QBitmap。QImage专门为图像的像素级访问 ...
Qt学习之路(28):坐标变换
经过前面的章节,我们已经能够画出一些东西来,主要就是使用QPainter的相关函数。今天,我们要看的是QPainter的坐标系统。
同很多坐标系统一样,QPainter的默认坐标的原点(0, 0)位于屏幕的左上角,X轴正方向是水平向右,Y轴正方向是竖直向下。在这个坐标系统中,每个像素占据1 x 1的空间。你可以把它想象成是一张坐标值,其 ...
Qt学习之路(18):Qt标准对话框之QInputDialog
这是Qt标准对话框的最后一部分。正如同其名字显示的一样,QInputDialog用于接收用户的输入。QInputDialog提供了一些简单的static函数,用于快速的建立一个对话框,正像QColorDialog提供了getColor函数一样。
首先来看看getText函数:
bool isOK;
QString text = QInputDialog::getText(NULL, "Input Dialog","Please ...
Qt学习之路(26):反走样
今天继续前面的内容。既然已经进入2D绘图部分,那么就先继续研究一下有关QPainter的东西吧!
反走样是图形学中的重要概念,用以防止“锯齿”现象的出现。很多系统的绘图API里面都会内置了反走样的算法,不过默认一般都是关闭的,Qt也不例外。下面我们来看看代码。这段代码仅仅给出了paintEvent函数,相信你可以很轻松地替换 ...
Qt学习之路(25):QPainter(续)
首先还是要先把上次的代码拿上来。
void PaintedWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawLine(80, 100, 650, 500);
painter.setPen(Qt::red);
painter.drawRect(10, 10, 100, 400);
painter.setPen(QPen(Qt::green, 5));
painter.setBrush(Qt::blue);
painter.drawEllips ...
Qt学习之路(15):Qt标准对话框之QFileDialog
下面还是按照我们的进度,从Qt的标准对话框开始说起。所谓标准对话框,其实就是Qt内置的一些对话框,比如文件选择、颜色选择等等。今天首先介绍一下QFileDialog。
QFileDialog是Qt中用于文件打开和保存的对话框,相当于Swing里面的JFileChooser。下面打开我们前面使用的工程。我们已经很有先见之明的写好了一个打开的action ...
Qt学习之路(14):状态栏
今天的内容主要还是继续完善前面的那个程序。我们要为我们的程序加上一个状态栏。
状态栏位于主窗口的最下方,提供一个显示工具提示等信息的地方。一般地,当窗口不是最大化的时候,状态栏的右下角会有一个可以调节大小的控制点;当窗口最大化的时候,这个控制点会自动消失。Qt提供了一个QStatusBar类来实现状态栏。
Qt具有 ...
Qt学习之路(4):初探信号槽
看过了简单的Hello, world! 之后,下面来看看Qt最引以为豪的信号槽机制!
所谓信号槽,简单来说,就像是插销一样:一个插头和一个插座。怎么说呢?当某种事件发生之后,比如,点击了一下鼠标,或者按了某个按键,这时,这个组件就会发出一个信号。就像是广播一样,如果有了事件,它就漫天发声。这时,如果有一个槽,正好对 ...
C++实现不可被拷贝的类
在C++中,类的拷贝主要是通过拷贝构造函数和赋值函数,再者就是为拷贝专门实现的成员方法。由于拷贝构造函数和赋值函数在用户为提供的情况下是由C++编译器自动生成的,而且是public成员,因此默认的C++类都有拷贝功能。若让一个C++类不能被拷贝,可显式地声明类的拷贝构造函数和赋值函数为私有函数,从而达到该类不可被拷贝 ...
Qt学习之路(12):菜单和工具条
在前面的QMainWindow的基础之上,我们开始着手建造我们的应用程序。虽然现在已经有一个框架,但是,确切地说我们还一行代码没有写呢!下面的工作就不那么简单了!在这一节里面,我们要为我们的框架添加菜单和工具条。
就像Swing里面的Action一样,Qt里面也有一个类似的类,叫做QAction。顾名思义,QAction类保存有关于这个 ...