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.
|