AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi COM (RS232 Schnittstelle) Lesen - Alternative?
Thema durchsuchen
Ansicht
Themen-Optionen

COM (RS232 Schnittstelle) Lesen - Alternative?

Ein Thema von Real-TTX · begonnen am 7. Mai 2008 · letzter Beitrag vom 7. Mai 2008
Antwort Antwort
Real-TTX

Registriert seit: 7. Mai 2008
Ort: Stuttgart / Wertheim
136 Beiträge
 
Delphi 2007 Enterprise
 
#1

COM (RS232 Schnittstelle) Lesen - Alternative?

  Alt 7. Mai 2008, 18:54
Hallo Gemeinde

Ich erweitere schon seit längerem mein Wissen mit dieser Seite. Nun ist es soweit, ich habe selbst eine kleine Frage

Ich baue eine Verbindung zu einem Messschieber über die RS232 Schnittstelle auf. Der Messschieber hat eine Taste "DATA". Mit dieser Taste werden 12 "Char"s an den Computer gesendet. Nun habe ich 2 Probleme. Ich nutze im moment eine OpenSource Package dass ich über SourceForge gefunden habe (Name: Async Pro). Ich würde lieber die Delphi eigenen Möglichkeiten dazu nutzen(THandle).

Ich bekomme es jedoch damit nicht hin Habe mir schon ein paar Bsp. Angeschaut. Doch - Kein Ergebnis Ich hoffe jemand kann mir da helfen..

Ein weiteres Problem ist, dass ich die Daten nicht auf einmal bekomme. Sondern die Komponente AsyncPro hat eine Procedure (OnTrigger..). Die wird 2mal ausgeführt. Beim ersten mal werden 8 Chars gesendet. Direkt darauf noch einmal die restlichen 4.

Nun habe ich das mit einer Not-Lösung hinbekommen. Dennoch erfüllt es nicht seinen Zweck....

Hier mein jetziger Code (Bsp - Zusammengefasst) :

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OoMisc, AdPort;

type
  TForm1 = class(TForm)
    ComPort: TApdComPort;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure ComPortTriggerAvail(CP: TObject; Count: Word);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  i : integer;
  loop: boolean;
  Result : String;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ComPort.Open := True;
i := 1;
end;

procedure TForm1.ComPortTriggerAvail(CP: TObject; Count: Word);
var
  I : Word;
  C : Char;
  S : String;
begin
  S := '';
  for I := 1 to Count do begin
    C := ComPort.GetChar;
    case C of
      #0..#31 : {Don't display} ;
      else S := S + C;
    end;
  end;
  //Memo1.Lines.Add(IntToStr(length(S)));
   if (length(S) = 8) then
   begin
    Result := S;
   end;
   if (length(S) = 4) then
   begin
    Result := Result + S;
    Memo1.Lines.Add(Result);
   end;

end;
Gruß, Real-TTX
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: COM (RS232 Schnittstelle) Lesen - Alternative?

  Alt 7. Mai 2008, 19:17
1. Async Pro ist ein ausgereiftes Paket.
2. Daten kommen immer häppchenweise an. Du musst doch nur mitzählen oder auf ein EOT (End Of Transmission) - Zeichen warten, je nach Protokoll

Die Programmierung mit Windows-eigenen Mitteln ist recht aufwändig, sodaß ich Dir empfehlen würde, Async Pro zu lernen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 Uhr.
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