Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Datenübertragung über TMSComm / String Double (https://www.delphipraxis.net/114424-datenuebertragung-ueber-tmscomm-string-double.html)

Chemiker 25. Mai 2008 17:34

Re: Datenübertragung über TMSComm / String Double
 
Hallo marabu,

nein, mit comEVRecive hole ich den Messwert, dabei ist RTreshold auf 16 eingestellt. Das heißt, wenn 16 Zeichen im Empfangsbuffer angekommen sind wird das Event ausgelöst. Aber das ist ja auch ok, wenn der übertrage String immer die gleiche Länge hat. Aber wie sieht das ganze aus wenn die String-Länge unterschiedlich ist, soll dann bei jedem Byte ein Event ausgelöst werden und analysiert werden?

Bis bald Chemiker

marabu 25. Mai 2008 17:52

Re: Datenübertragung über TMSComm / String Double
 
Wenn du variabel lange Zeichenketten verarbeiten möchtest, dann wäre nach meiner Einschätzung RThreshold auf 1 zu setzen.

Chemiker 25. Mai 2008 18:32

Re: Datenübertragung über TMSComm / String Double
 
Hallo marabu,

ich werde es einfach mal nächst Woche versuchen.

Bis bald Chemiker

Chemiker 25. Mai 2008 23:47

Re: Datenübertragung über TMSComm / String Double
 
Hallo,

habe jetzt die Möglichkeit gefunden, um einen String mit variabler Länge über die TMSComm zu übertragen und den String anschließend wieder zu separieren.
Das Demo – Prg. ist ohne jegliche Fehlermeldungen.

Delphi-Quellcode:
unit ufrmHauptLesen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, MSCommLib_TLB;

type
  TForm1 = class(TForm)
    MSComm1: TMSComm;
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    procedure MSComm1Comm(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

  empangen: string;
  Ausgabe: String;
  aChar: Char;

implementation

{$R *.dfm}

procedure TForm1.MSComm1Comm(Sender: TObject);
begin
  if MSComm1.CommEvent = comEvreceive then
  begin
    empangen:= MSComm1.Input;
    empangen:= String(empangen);
    aChar:= empangen[1];
    if aChar=Chr ($03) then
    begin
      Memo1.Lines.Add(Ausgabe);
      Ausgabe:= '';
    end;
    if ((aChar <> chr($02)) and (achar <> chr ($03))) then
    begin
      Ausgabe:= Ausgabe+aChar;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MSComm1.PortOpen:= True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear;
end;

end.
Bis bald Chemiker


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz