发表于:2004-07-10 09:46:00
楼主
刚才本打算把源代码贴上,结果失败!以下是声明部分:
unit Unit_zfcomm;
interface
uses
Windows,SysUtils,Controls,Forms,Dialogs;
const
missecond=0.0000000115972; //将时间延迟更改为毫秒单位
type
TCommObj = class(TObject)
private
hcom:Thandle;
lpol:Poverlapped;
read_Buffer:array[0..9] of char; //读缓冲区,应(可)该为局部变量
write_Buffer:array[0..99] of char; //写缓冲区,必要时可增大
//数组下标必须为 0
sa :SECURITY_ATTRIBUTES;
procedure Init; //初始化参数,被构造函数调用
function CommInitialize():bool; //被openPort调用
function ReadBuffer():integer; //被readDev调用
function WriteBuffer():integer; //被readDev调用
procedure ClearBuffer(var arr:array of char);
procedure SetWriteBuffer(value:string);
//不被类外的任何代码调用
protected //目的是可以被子类直接使用
//读写属性
comm_commport:pchar; //com1 com2 com3 ...
comm_settings:string; //9600,n,8,1
comm_portopen:bool; //端口的开关状态
comm_timewait:real; //单位是毫秒
comm_evtchar:char; //结束字符
comm_inbsize:cardinal; //输入缓冲
comm_outbsize:cardinal; //输出缓冲
comm_charorlen:integer; //结束验证类型 0:特定char ,否则为接受字符的长度
comm_charmodel:integer; //显示模式0:char,1:hex,2:asc
public
//字段的声明 //可读写都声明为字段
property CommPort:pchar read comm_commport write comm_commport;
property Settings:string read comm_settings write comm_settings;
property inBsize:cardinal read comm_inbsize write comm_inbsize;
property outBsize:cardinal read comm_outbsize write comm_outbsize;
property TimeWait:real read comm_TimeWait write comm_timeWait;
property evtChar:char read comm_evtChar write comm_evtChar;
property charOrLen:integer read comm_charorlen write comm_charorlen;
property charModel:integer read comm_charmodel write comm_charmodel;
property portOpen:bool read comm_portOpen;
function SetPortOpen(value:boolean):boolean;
function SendAByte(abyte:byte):integer; //发送一个字节 *******
function SendMByte(str_data:string):integer; //发送多个字节 *******
function GetData(command:string):string; //应用在普通通讯
function ResetCommPara(seting : string):bool; //设置通讯口属性
function GetDataFromAddr(addr:byte;command:string):string; //应用在多机通讯
constructor Create; //构造函数 负责初始化数据
destructor Destroy; override; //析构函数 负责清除对象和关闭端口
//和通讯有关的其他常用函数
end;
{声明TcommObj 类 完毕}
{全局函数声明处}
function fcs(str:string):string;
function asctochar(str:string):string; //10进制字符串变成字符串
function asctohex(str:string):string; //10进制字符串变成16进制字符串
function chartoasc(str:string):string; //字符串变成10进制字符串
function chartohex(str:string):string; //字符串变成16进制字符串
function hextochar(str:string):string; //16进制字符串变成字符串
function hextoasc(str:string):string; //16进制字符串变成10进制字符串
function FmtStr(str:string;s_len:integer):string;
function FmtStrEx(str:string;s_len:integer;SpaceLeft:bool;delLeft:bool):string;
function getPosStr(substr:string;str:string;order:integer):integer;
// function WinExitInNT( iFlags : integer ) : boolean;
implementation
{以下是TcommObj 的实现文件 }