AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Abfrage des Seriellen Ports liefert nur Mist
Thema durchsuchen
Ansicht
Themen-Optionen

Abfrage des Seriellen Ports liefert nur Mist

Ein Thema von Chris4712 · begonnen am 9. Dez 2010 · letzter Beitrag vom 15. Dez 2010
 
Chris4712

Registriert seit: 24. Apr 2005
Ort: Herborn
25 Beiträge
 
Delphi 7 Enterprise
 
#1

Abfrage des Seriellen Ports liefert nur Mist

  Alt 9. Dez 2010, 23:31
Delphi-Version: 7
Hallo!

Ich habe vor Jahren mich mit Delphi in der Schule beschäftigt. Bin leider mittlerweile leicht aus der Übung.
Nichts destotrotz soll ich ein Projekt umsetzen. Es sollen Daten an die Serielle Schnittstelle geschrieben und auch ausgelesen werden. Damit soll man ein Netzteil einstellen können.
Die Schnittstellenparameter vom Netzteil sind:
Baudrate: 57600 baud
Datenbits: 8
Parity: keine
Protokoll: <STX>/<ETX>

Mit meinem Code kommt nur unverständliche Zeichen zurück (Rot ist der gesendete Befehl):
OUT:UOUTS??t?ÝÀý
OUT:UOUTS??@õÁð

Prinzibiell scheint der Code OK zu sein. Wenn ich ein embeded System (Soekris) anschließe kommen lesbare Zeichen zurück.

Hier nun der Code
Delphi-Quellcode:
procedure TMainForm.cpDrvReceiveData(Sender: TObject; DataPtr: Pointer;
  DataSize: Cardinal);
var iLastLine, i: integer;
    s, ss: string;
begin
  // Convert incoming data into a string
  s := StringOfChar( ' ', DataSize );
  move( DataPtr^, pchar(s)^, DataSize );

  // Exit if s is empty. This usually occurs when one or more NULL characters
  // (chr(0)) are received.
  while pos( #0, s ) > 0 do
    delete( s, pos( #0, s ), 1 );
  if s = 'then
    exit;
  // Remove line feeds
  i := pos( #10, s );
  while i <> 0 do
  begin
    delete( s, i, 1 );
    i := pos( #10, s );
  end;

  // Don't redraw the rich edit control until we finished updating it
  //IncomingRichEdit.Lines.BeginUpdate;
  // Get last line index
  iLastLine := Console.ConsoleOutput.Lines.Count-1;
  // If the rich edit is empty...
  if iLastLine = -1 then
  begin
    // Remove line feeds from the string
    i := pos( #10, s );
    while i <> 0 do
    begin
      delete( s, i, 1 );
      i := pos( #10, s );
    end;
    // Remove carriage returns from the string (break lines)
    i := pos( #13, s );
    while i <> 0 do
    begin
      ss := copy( s, 1, i-1 );
      delete( s, 1, i );
      Console.ConsoleOutput.Lines.Append( ss );
      i := pos( #13, s );
    end;
    Console.ConsoleOutput.Lines.Append( s );
  end
  else
  begin
    // String to add is : last line added + new one
    s := Console.ConsoleOutput.Lines[iLastLine] + s;
    // Remove carriage returns (break lines)
    i := pos( #13, s );
    while i <> 0 do
    begin
      ss := copy( s, 1, i-1 );
      delete( s, 1, i );
      if iLastLine <> -1 then
      begin
        Console.ConsoleOutput.Lines[iLastLine] := ss;
        iLastLine := -1;
      end
      else
        Console.ConsoleOutput.Lines.Append( ss );
      i := pos( #13, s );
    end;
    if iLastLine <> -1 then
      Console.ConsoleOutput.Lines[iLastLine] := s
    else
      Console.ConsoleOutput.Lines.Append( s );
  end;
  //IncomingRichEdit.Lines.EndUpdate;
  // Scroll incoming text rich edit
  SendMessage( Console.ConsoleOutput.Handle, EM_SCROLLCARET, 0, 0 );
end;
Bitte bitte helft mir!

Grüße!
  Mit Zitat antworten Zitat
 


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 10:14 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-2025 by Thomas Breitkreuz