Vas como un tren-bala.
P.D. Nunca he usado el TApdDataPacket pero sospecho que me va a quitar cierta problemática que tengo al recibir los strings a "trozos" en el TApdComport en el OnPortTriggerAvail y tener que componerlo antes de darlo por bueno. Tendré que investigarlo.
Hola Redpic, gracias por el comentario. El TApdDataPacket es una maravilla, si te fijas en el primer video, tengo problemas porque recibe por trozos, en ocasiones debo clickar doble vez, en esa parte utilizaba el OnportTrigger Avail, investigué y dí con la TApdDataPacket, solo pones el caracter de inicio y el de final en mi caso puse el caracter #2 STX para inicio y el #3 ETX para fin de trama, el packete te guarda lo que este entre ellos con la opción de incluir dichos caracteres de inicio y fin en la cadena o no incluirlos, también puedes poner el número de caracteres. En el segundo video quité el Ontriggeravail y utilicé la Datapacket, y va como la seda.
Una captura para congifurar el TApdDataPacket: (Utilizo el evento OnStringPacket)
Y el código fuente del progama:
unit rs485_1;
interface
uses
WinTypes, WinProcs, SysUtils, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, AdPort, OoMisc, WinSkinData, WinSkinStore,
ExtCtrls, Grids, AdPacket;
type
TForm1 = class(TForm)
ApdComPort1: TApdComPort;
SkinData1: TSkinData;
SkinStore1: TSkinStore;
enviar: TButton;
comandos: TRadioGroup;
ApdDataPacket1: TApdDataPacket;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure enviarClick(Sender: TObject);
procedure ApdDataPacket1StringPacket(Sender: TObject; Data: String);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
STX,ETX:Char;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
Skindata1.LoadFromCollection(skinstore1,0);
STX:=#2;
ETX:=#3;
end;
procedure TForm1.enviarClick(Sender: TObject);
var comando:char;
begin
Case comandos.ItemIndex of
0:comando:='/';
1:comando:='%';
2:comando:='#';
3:comando:='=';
4:comando:='$';
end;
ApdComPort1.OutPut :=STX+'1234'+comando+ETX;
end;
procedure TForm1.ApdDataPacket1StringPacket(Sender: TObject; Data: String);
begin
Caption:=data;
memo1.Lines.Add(data);
end;
end.
Una pequeña retribución de lo que he aprendido del maestro.
Saludos.
Ganbatte kudasai.