![]() |
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 |
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.
|
Re: Datenübertragung über TMSComm / String Double
Hallo marabu,
ich werde es einfach mal nächst Woche versuchen. Bis bald Chemiker |
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:
Bis bald Chemiker
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz