RSS

基于多线程技术的异步串行通信应用

发布时间:2006-12-31 关键字: 通信 技术 基于 线程 串口 串行 系统
1  引言
在工业控制领域,由于串行接口简单、使用方便,从而使得异步串行通信成为计算机之间极为常用的通信手段。C++ Builder 6是Borland公司推出的快速应用程序开发平台,它采用面向对象的C++作为开发语言,同时提供了良好的可视化开发环境,是目前开发Windows应用程序的强大、高效的开发平台之一。在基于Windows 2000的多任务操作平台下的控制系统中,利用C++ Builder的多线程技术实现串行通信可以增强控制程序的运行效率,保证控制的准确性和健壮性。

2  C++ Builder下的多线程开发
线程应用程序是包含数个同时执行的线程的应用程序,C++ Builder中的TThread提供了用于简化编写多线程应用程序的对象,大大简化了编写多线程程序的难度。这些对象通过避免瓶颈、组织程序和多道处理等方式来增强程序的功能。
2.1  定义线程对象
要在应用程序中使用线程对象,必须创建TThread的一个新的派生类。可从主菜单中选择File|New来创建TThread的一个派生类,在新对话框中,选择Thread Object,系统会提示为新线程对象提供类名。在提供名字之后,C++ Builder创建一个新的.cpp和头文件以实现线程。自动生成的.cpp文件中包含关于新线程的代码框架,若将线程命名为TmyThread,则. cpp文件如下所示:
//--------------------------------
#include <vcl/vcl.h>
#include pragma hdrstop
#include “Unit2.h”
__fastcall TMyThread::TMyThread(bool CreateSuspended):Tthread(CreateSuspended)
{
}
//--------------------------------
void __fastcall TmyThread::Execute()
{
  //---- Place thread code here ----
}
//--------------------------------
在此段代码中,首先需要使用构造函数来初始化新线程类,一般是为线程分配缺省的优先级,并可指定线程是否在执行完成后自动释放。之后在Execute方法中编写线程函数实现任务。
线程程序的编写和独立的程序不同,必须确认没有覆盖应用程序其他线程所使用的内存,同时因为线程与其他线程共享相同的进程空间,可使用共享内存在线程之间通信。可以通过使用主VCL线程、使用线程局部变量和检验其他线程发出的结束消息等方式实现线程函数编写的特殊要求。
2.2  执行线程对象
当定义Execute方法实现线程类后,可在应用程序中使用它来启动Execute方法的代码。要使用线程,首先创建线程类的一个实例。可以创建立即开始运行的线程实例,或创建一个处于临时中断状态的线程,只在调用Resume方法时开始。要创建一个立即开始运行的线程实例,将构造函数的 CreateSuspended参数设为false。例如,下列代码创建一个线程并开始执行:TmyThread *SecondPreocess = new TmyThread(false); //create and run the thread,在完成执行之前线程可被随意开始和停止,要结束或者临时停止线程,调用他们的Terminate或者Suspend方法。需继续时,调用 Resume方法。
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册