AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Ntzliche Links
Registrieren
Zurck Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Auslesen der Schnittstelle mit SerialNG
Thema durchsuchen
Ansicht
Themen-Optionen

Auslesen der Schnittstelle mit SerialNG

Ein Thema von Delphieinsteiger · begonnen am 29. Aug 2007 · letzter Beitrag vom 3. Sep 2007
 
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beitrge
 
#2

Re: Auslesen der Schnittstelle mit SerialNG

  Alt 31. Aug 2007, 11:57
Hi,
erstmal eine Kleinigkeit vorweg, wenn Du Code posten mchtest, dann benutze dafr am Besten die Delphi-Tags, die finden sich ber dem Eingabefeld, wo Du den Beitrag eingibst. Einfach einmal auf Delphi-Code clicken, Code einfgen und auf Delphi-Code* Clicken, dann wird der Code einfach schner dargestellt (nur fr's nchste mal, ist ja nichts Schlimmes!)

Zitat von Delphieinsteiger:
Jetzt habe ich alle Werte die der Logger aufgenommen hat(Bytes) als String in meiner Memobox.aber wie kriege ich diese Werte umgewandelt?ich wrde meinen Arrays ja z.B am liebsten eine 23 fr 23 bergeben.
Wie genau sehen denn die Daten aus die Du bekommst. Ich kenne die SerialNG-Komponente nicht (benutze immer TComPort), aber an sich bekommst Du beim Zugriff auf die serielle Schnittstelle immer etwas wie Bytes, die sehr hufig auch als String interpretiert werden mssen.
Bei der bertragung gibt es aber verschiedene Mglichkeiten:
  • Es werden Daten fester Lnge bertragen
  • Es wird ein Festes Datum (Anzahl der folgenden Daten) bertragen (
  • Es werden Start- und/oder Endzeichen bertragen (Datum endet, sobald bestimmtes Zeichen empfangen wurde)
Letzteres umfsst natrlich auch die mglichen Kombinationen. Das Problem bei der RS-232-Schnittstelle ist eben, dass die Kommunikation asynchron ist, Du bekommst einfach nur mehrere Bytes, ob die zusammengehren oder nicht, ob ein Datum komplett bertragen wurde, das musst Du selbst entscheiden. Vorab also die Warnung, dass Du hier ggf. drauf achten msstest (kann Dir aber eventuell auch von SerialNG abgenommen werden).

Wenn Du jetzt also ein Datum empfngst, welche Form hat es denn? Hast Du bereits einen String wie '23' oder gar '23'? Und mchtest Du daraus jetzt ein Integer machen? Dazu kannst findest Du in der Unit SysUtils (in der Uses Klausel angeben) die Funktion StrToInt bzw. auch TryStrToInt. Letztere fngt dabei Fehler ab, wenn Du z.B. versuchst aus '1a0' eine Zahl zu machen. Die Funktion liefert ein Boolschen Wert zurck, ob die Umwandlung geklappt hat.
Fr das Beispiel she dann die Umwandlung ungefhr so aus:
Delphi-Quellcode:
var temp: Integer;
begin
  // input ist der String, den Du in eine Temperatur umwandeln mchtest
  // Wenn Du das Grad-Zeichen dran httest, musst Du das vorher entfernen
  // wenn nicht, die folgende Zeile weglassen
  input := copy(input, 1, Pos('')); // Kopiert aus dem String input alles vom ersten Zeichen bis zum ersten Auftreten von ''
  
  if not TryStrToInt(input, temp) then
  begin
    // Fehler bei der Umwandlung, irgendwas machen
  end;

  // in Temp steht nun der Zahlenwert der Temperatur
end;
Der umgekehrte Weg ist dann noch leichter, hier scheiden Fehler in der Eingabe aus. Ein Integer ist immer mit einer gltigen Zahl belegt und kann ber IntToStr in einen String umgewandelt werden (ebenfalls in der Unit SysUtils deklariert).
Delphi-Quellcode:
var temp: String;
begin
  // input ist der Integer Wert, den Du in einen Temperatur-String umwandeln mchtest
  temp := IntToStr(input);

  // oder wenn Du ein Grad Zeichen dran haben mchtest
  temp := IntToStr(input) + '';
end;
Das ist jetzt natrlich nur der Weg, wenn Du ein einzelnen String oder Integer-Wert umwandeln mchtest. Du sagtest ja, dass Du gleich eine ganze Menge davon hast. Was Du also tun musst ist, diesen zu zerlegen. Wie man das am Einfachsten macht hngt aber eben von dem Aufbau ab. Je nachdem ob es ein Trennzeichen gibt oder ein Datum eine feste Lnge hat kommen unterschiedliche Wege in Frage, sag einfach erstmal wie die Daten aufgebaut sind.

Gru Der Unwissende
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beitrge zu antworten.
Es ist dir nicht erlaubt, Anhnge hochzuladen.
Es ist dir nicht erlaubt, deine Beitrge 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 18:50 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