FunctionComOpen(sPara:String):Thandle;//定义串行口初始化函数VarPparaa:array[0..20]ofChar,//变量生明Hcom:Thandle;DCB:TDCB;CommTimesout:TcommTimeouts;BeginResult:=0;StrPCopy(pPara,sPara);BuildCommDCB(pPara,DCB);WithCommTimeoutsdoBeginReadIntervalTimeout:=MAXDWORD;ReadTotalTimeoutMultiplier:=200;ReadTotalTimeConstant:=5000WriteTotaltimeoutConstant:=200;Hcom:=CreateFile(Pchar(Copy(sPara,1,4)),GENERRIC_READ+GENERRIC_WRITE,FILE_FLAG_OVERLAPPEDD,0);WriteTotaltimeoutConstant:=5000;IfSetCommState(hcom,DCB)thenBeginShowmessage(’串行口初始化成功!’;)End;End;End;数据发送函数:FunctionCommSend(hCom:Thandle;s:string):Boolean;Var
—54—
山东工程学院学报
2001年
DwWritten:DWORD;Ssend:array[0..80]ofchar;BeginStrPCopy(sSend,s);Result:=WriteFile(hcom,SSend,length(s),DwWritten,nil);End;数据读取函数:FunctionComRead(hcom:Thandle;s:string):Boolean;VarDwReadln:DWWORD;Sget:array[0..80]ofchar;BeginStrPcopy(Sget,s);Result:=ReadFile(hcom,Sget,length(s),DwReadln,nil);End;
以上只是几个对串行口操作的基本函数,定义了这几个函数后(包括串行口初始化、数据读写函数),可以利用它们方便快速的对串行口进行读写操作。这样数据采集的关键一步在Delphi环境下就解决了。2.3用ActiveX控件从本质上讲,ActiveX控件是一个AcActiveX控件是充分利用OLE和ActiveX技术的自定义控件。tiveX服务器,它所有的OLE自动化与所有的ActiveX服务器一样,ActiveX控件需要在系统
注册表中进行注册。iveX控件可以用许多产品来开发,包括Delphi、ActBorlandC++Builder、VisualC++以及VisualBasic。这里我们采用Delphi5.0自带的MSComm和SPcomm通讯控件即VisualBasic6.0中的MSComm进行串行口通讯。这里主要就SPComm控件进行说明,MSComm控件和SPComm控件大同小异,用法基本相同。2.3.1SPComm控件的主要属性见附表