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
最新评论共有 0 位网友发表了评论
查看所有评论
发表评论
热点关注
相关文章
- RS-485串行数据通信协议及其应用
- PC104计算机网络通讯系统设计与
- FPGA到高速DRAM的接口设计
- 路由器的工作原理及分类应用
- 基于8051嵌入式系统的GPRS终端实
- 5功能遥控器PT8A977/978的应用
- WRAP THOR 2022—1在蓝牙车载电
- 基于MPC852T通信处理器的无线接
- 传感器无线互联标准及实现
- 非接触卡MCRF200及PSK读写器电路
- 用异步收发器HT6720设计RFID系统
- 51兼容射频Soc nRF9E5与无线光机
- 基于射频卡芯片AT88SC6416CRF设
- 差分跳频的解调窗口同步算法
- 用GC1012B构建可编程数字无线电
- 基于GPS的航标遥测系统数值优化
- 蓝牙技术的现状及发展
- RI-R6C-001A集成电路的原理与应
- 单片2.4GHz无线收发一体芯片nRF2
- 基于无线收发数传模块PTR2030的

