UP!!
Niente da fare, l'evento non viene associato.
codice:
type
TPortCom = class(TObject)
ApdDataPacket1: TApdDataPacket;
ApdComPort1: TApdComPort;
public
constructor Create(AOwner: TComponent);
destructor Destroy; override;
procedure ApdDataPacket1Packet(Sender: TObject; Data: Pointer; Size: Integer);
end;
var
PortCom : TPortCom;
ET : EventTimer;
Conn : Boolean;
Prova : PChar;
constructor TPortCom.Create(AOwner: TComponent);
begin
ApdComPort1 := TApdComPort.Create(nil);
ApdDataPacket1 := TApdDataPacket.Create(nil);
end;
destructor TPortCom.Destroy;
begin
ApdComPort1.Open := false;
FreeAndNil(ApdComPort1);
FreeAndNil(ApdDataPacket1);
ApdComPort1.Destroy;
ApdDataPacket1.Destroy;
end;
procedure TPortCom.ApdDataPacket1Packet(Sender: TObject; Data: Pointer; Size: Integer);
begin
Prova := Data;
end;
Function DownloadPollingNEW(ADD: PChar; IDBOX: PChar): PChar; export; StdCall;
var
Response : String;
VerifyXor : Byte;
I : Integer;
begin
Try
//Invio il carattere EOT di chiusura per evitare trasmissioni aperte precedentemente
PortCom.ApdComPort1.PutString(chr($04));
//Invio la stringa di Polling: [SOH][GID][DID][ENQ] che in esadecimale diventa [01][41][?][05]
PortCom.ApdComPort1.PutString(chr($01)+ADD+IDBOX+chr($05));
PortCom.ApdDataPacket1.ComPort := PortCom.ApdComPort1;
PortCom.ApdDataPacket1.StartCond := scString;
PortCom.ApdDataPacket1.StartString := #2;
PortCom.ApdDataPacket1.EndCond := [ecString];
PortCom.ApdDataPacket1.EndString := #3+'?';
PortCom.ApdDataPacket1.OnPacket := PortCom.ApdDataPacket1Packet;
//Alloco memoria per contenere il valore di ritorno della funzione da passare al software
if Prova <> '' then
Response := Prova
else
Response := 'Nessun dato';
GetMem(Result,Length(Response));
//Copio il valore di ritorno nella variabile che la funzione ritorna
Result := StrPCopy(Result, Response);
//Result := PChar(Response);
Except
//Alloco memoria per contenere il valore di ritorno della funzione da passare al software
GetMem(Result,StrLen('ERROR'));
//Copio il valore di ritorno nella variabile che la funzione ritorna
Result := StrPCopy(Result, 'ERROR');
end;
end;
Procedure Connect(Baud: PChar; COM: PChar) export; StdCall;
var Creato: String;
begin
PortCom := TPortCom.Create(nil);
try
//Configuro la porta seriale e la apro per iniziare le comunicazioni
PortCom.ApdComPort1.ComNumber := StrToInt(COM);
PortCom.ApdComPort1.Baud := StrToInt(Baud);
PortCom.ApdComPort1.Parity := pNone;
PortCom.ApdComPort1.DataBits := 8;
PortCom.ApdComPort1.StopBits := 1;
PortCom.ApdComPort1.InSize := 256;
PortCom.ApdComPort1.Open := true;
Conn := true;
except
FreeAndNil(PortCom.ApdComPort1);
end;
end;
Procedure Disconnect() export; StdCall;
begin
PortCom.ApdComPort1.open := false;
FreeAndNil(PortCom.ApdComPort1);
FreeAndNil(PortCom.ApdDataPacket1);
Conn := false;
end;