70 lines
1.4 KiB
ObjectPascal
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.
|