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

70 lines
1.4 KiB
ObjectPascal

unit U_DataModule_COM;
interface
uses
SysUtils, Classes, SPComm, ExtCtrls,strUtils,shlobj,Windows;
var
sReceiveData:string;
mhandle:hwnd;
fhNum1:double;
fhnum2:double;
type
TDataModule_COM = class(TDataModule)
Comm1: TComm;
Timer1: TTimer;
procedure DataModuleDestroy(Sender: TObject);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
private
{ Private declarations }
public
{ Public declarations }
end;
CONST
IsRecHex=1;
var
DataModule_COM: TDataModule_COM;
implementation
uses U_HexFunction;
{$R *.dfm}
procedure TDataModule_COM.DataModuleDestroy(Sender: TObject);
begin
DataModule_COM:=nil;
end;
procedure TDataModule_COM.Comm1ReceiveData(Sender: TObject;
Buffer: Pointer; BufferLength: Word);
var
str :string;
str1,str2:string;
i1,i2:integer;
num1,num2:integer;
fRate,aaa:double;
begin
try
SetLength(Str,BufferLength);
move(buffer^,pchar(@Str[1])^,bufferlength);
IF IsRecHex=1 THEN
sReceiveData:=trim(StrToHexStr(Str))
else
sReceiveData:=trim(Str);
IF length(trim(sReceiveData))>=14 then
begin
str1:=Copy(sReceiveData,1,12);
fhNum1:=strtofloat(HexStrToStr(str1));
num1:=strtoint(floattostr(fhNum1*100000));
str1:=Copy(sReceiveData,15,2);
IF str1='4D' then num2:=0 else num2:=1;
postmessage(mhandle,1301,num1,num2);
end;
except
end;
end;
end.