シンプルな Delphi 10.3 コンソール アプリケーションで TComPort (4.11f) を使用していますが、以下を参照してください。しかし、データを取得できません。
VCL アプリケーションで同じコードを使用すると問題なく動作します。何かご意見は?
私の推測では、オブジェクトComDataPacket1
とComPort1
オブジェクトを正しく接続していません。しかし、私はそれを行う別の方法を見つけることができませんでした.
program commapp;
{$APPTYPE CONSOLE}
uses
Vcl.Forms, CPort, CPortCtl, system.sysutils, classes, Windows;
{$R *.res}
var
ComPort1: TComPort;
ComDataPacket1: TComDataPacket;
Sender: TObject;
Str: string;
type
TEventHandlers = class
class procedure ComDataPacket1Packet(Sender: TObject; const Str: string);
end;
class procedure TEventHandlers.ComDataPacket1Packet(Sender: TObject; const Str: string);
begin
WriteLn('Inside the proc with ' + str);
end;
begin // Main program ///
ComPort1 := TComPort.Create(nil); // create the comm
ComDataPacket1 := TComDataPacket.Create(nil);
ComPort1.BaudRate := br115200; // set parameters
ComPort1.Port := 'COM3';
ComPort1.Parity.Bits := prNone;
ComDataPacket1.Size := 33;
ComDataPacket1.ComPort := ComPort1;
ComDataPacket1.OnPacket := TEventHandlers.ComDataPacket1Packet;
ComDataPacket1.StartString := '';
ComDataPacket1.StopString := '';
if ParamCount = 0 then // no paramters passed enter menu
begin
ComPort1.ShowSetupDialog; // Open the port settings.
ComPort1.Open;
ComPort1.WriteStr('b') ; // Send the command to start sending data
WriteLn('After sending an b I get : ' + str);
ReadLn;
end;
// release the components
ComDataPacket1.Free;
ComPort1.Free;
end.