D7wmleixiaofu/码表/U_EleData.pas
DESKTOP-E401PHE\Administrator c446a0860f ~
2025-04-30 16:04:42 +08:00

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.