unit U_EleData; interface uses SysUtils,Windows,forms,Spcomm, shlobj,ExtCtrls,strUtils; function SendString(str: string):integer; function CommOpen(fhandle:hwnd;sCommName:PAnsiChar; IntTime:integer;IsMessage:integer):integer;export;stdcall; function CommClose(sCommName:PAnsiChar):integer;export;stdcall; function jsDecimalRate(frate:integer):double; CONST sendml='777730303030302E34306B670D0A'; implementation uses U_HexFunction,U_iniParam,U_DataModule_COM; function CommClose(sCommName:PAnsiChar):integer;export;stdcall; begin result:=0; try if not Assigned(DataModule_COM) then DataModule_COM:=TDataModule_COM.Create(Application); DataModule_COM.Comm1.StopComm; result:=1; except end; end; function jsDecimalRate(frate:integer):double; var i:integer; num:double; begin num:=1; i:=1; try while i<= frate do begin num:=num / 10; i:=i+1; end; finally result:=num; end; end; function SendString(str: string):integer; var str1:string; begin result:=0; try IF IsRecHex=1 then str1:= HexStrToStr(str) else str1:= str; str1:= HexStrToStr(str); DataModule_COM.Comm1.WriteCommData(Pchar(str1),Length(str1)); result:=1; except end; end; function CommOpen(fhandle:hwnd;sCommName:PAnsiChar; IntTime:integer;IsMessage:integer):integer;export;stdcall; begin if IsINIFile()then ReadINIFile() else WriteINIFile(); result:=0; if not Assigned(DataModule_COM) then DataModule_COM:=TDataModule_COM.Create(Application); try with DataModule_COM do begin mhandle:= fhandle; Comm1.CommName:=trim(fCommName); Comm1.BaudRate:=fBaudRate; Comm1.Parity:=TParity(fParity); if fByteSize=5 then Comm1.ByteSize := _5 else if fByteSize=6 then Comm1.ByteSize := _6 else if fByteSize=7 then Comm1.ByteSize := _7 else if fByteSize=8 then Comm1.ByteSize := _8; Comm1.StopBits:= TStopBits(fStopBits); Comm1.ReadIntervalTimeout:=fTimes; Comm1.StartComm; end; result:=1; except end; end; end.