100 lines
2.1 KiB
ObjectPascal
100 lines
2.1 KiB
ObjectPascal
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.
|