AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Datenübertragung über TMSComm / String Double
Thema durchsuchen
Ansicht
Themen-Optionen

Datenübertragung über TMSComm / String Double

Ein Thema von Chemiker · begonnen am 25. Mai 2008 · letzter Beitrag vom 26. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#1

Datenübertragung über TMSComm / String Double

  Alt 25. Mai 2008, 10:42
Hallo,

ich habe folgendes Problem, die Datenübertragung über die serielle Schnittstelle wird mit der Komponente TMSComm von VS 6.0 Prof. durchgeführt.
Die Übertragung ist eine Messstellen – Kennung und einen Messwert als String.
Etwa in der Form

‚T01T1-000135.12’ dieser String wird über die serielle Schnittstelle übertragen.

Ergebinss:

‚T01T1’ Messstellen - Kennung als String
-135.12 Messwert als Double

Ich würde aber lieber die Messstellen – Kennung als String übertragen und den Messwert als Double.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Datenübertragung über TMSComm / String Double

  Alt 25. Mai 2008, 10:53
Moin,

ich würde es lieber weiter als String übertragen. Sobald du interne Datenformate übermittelst, wirst du dir Gedanken über ein binärkompatibles Übertragungsprotokoll machen müssen, damit nicht plötzlich Steuerzeichen interpretiert werden, die einfach nur Bestandteil eines Double-Wertes sind.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Datenübertragung über TMSComm / String Double

  Alt 25. Mai 2008, 11:11
Hallo marabu,

danke für die schnelle Antwort.
Es ist jetzt so, dass ein Block von 16 Zeichen übertragen wird egal welcher Messwert übertragen wird.
Ist es eigentlich möglich den Anfang und das Ende des Blocks zu kennzeichnen, dann könnte der String so aussehen:

[Anf.] T01T1-135.12[Ende]
[Anf.]T01T2+10000.01[Ende]
usw.

allerdings bekomme ich dann unterschiedlich Längen.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Datenübertragung über TMSComm / String Double

  Alt 25. Mai 2008, 11:53
Warum nicht? Dafür sind die ASCII Control Character schließlich da, z.B. STX (#2, start-of-text) und ETX (#3, end-of-text).
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Datenübertragung über TMSComm / String Double

  Alt 25. Mai 2008, 13:48
Hallo marabu,

dann werden die Strings so aufgebaut:
chr(002)+’T01T1-132.12’+chr(003)
chr(002)+’T02T1+1000000.01’+chr(003)

Aber wie kann ich den übertragenen String wieder isolieren? Und wie muss der Aus- und Eingabepuffer aussehen. Bisher habe ich bei einem Fehler der Empfangspuffer gelöscht.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Datenübertragung über TMSComm / String Double

  Alt 25. Mai 2008, 14:03
Hallo,

die Lösung ist eigentlich recht einfach: Du benötigst einen Zustandsautomaten, der dieses primitive Protokoll verarbeiten kann. Bei TP Async Pro werden dir für diesen Zweck Data Trigger Events angeboten. Vielleicht bietet MSCOMM32.OCX ja ähnliche Mechanismen?

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Datenübertragung über TMSComm / String Double

  Alt 25. Mai 2008, 15:37
Hallo marabu,

also aus der Dokumentation geht nichts hervor, ob das Protokoll so aufgebaut ist. Man kann von Text auf Binär umstellen das war’s.
Habe auch schon im Internet gesucht, aber kein passendes Beispiel in VB, C++ oder Delphi gefunden.

Ich wollte das Programm nur anpassen und nicht eine neue Komponente einbauen. Ist auch blöd, dass seit bestehen von Delphi so eine Komponente nicht vorhanden ist, daher habe ich vor Jahren auf TMSCOMM gesetzt, weil mir VS 6.0 zur Verfügung stand.

Ich werde mal Versuchen, ob ich es binär hinbekomme und die einzelnen Bytes prüfen.
Wenn Du noch eine Idee hast, nur her damit.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Datenübertragung über TMSComm / String Double

  Alt 25. Mai 2008, 16:46
ÖHM... Was genau ist jetzt Dein Problem? Ich hab den Thread jetzt zweimal gelesen und komme einfach nicht dahinter, was Du nun ändern willst, Chemiker. Wo genau klemmt es denn? Willst Du irgendein Programm von C++ nach Delphi portieren oder worum geht es eigentlich? Sobald Du das ASCII-basierte Protokoll in ein binäres Protokoll änderst, wird Dein Parser sehr viel komplizierter, Du erhöhst also ohne Not die Anzahl möglicher Bugs und Probleme. Mehr Details zum Problem bitte!
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Datenübertragung über TMSComm / String Double

  Alt 25. Mai 2008, 17:35
Hallo OldGrumpy,

ursprünglich wollte ich einen String+Double Wert über die serielle Schnittstelle übertragen.
Habe ich so in #1 geschrieben. Es ist aber besser beim String zu bleiben.
Meine Frage ist jetzt wenn ich einen String übertrage, sollte er wie in #5 aussehen.

Zitat:
die Lösung ist eigentlich recht einfach: Du benötigst einen Zustandsautomaten, der dieses primitive Protokoll verarbeiten kann. Bei TP Async Pro werden dir für diesen Zweck Data Trigger Events angeboten. Vielleicht bietet MSCOMM32.OCX ja ähnliche Mechanismen?
Diese Data Trigger Events sind wahrscheinlich nicht in MSCOMM vorhanden, jedenfalls finde ich nichts.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Datenübertragung über TMSComm / String Double

  Alt 25. Mai 2008, 18:17
Hallo Chemiker,

hast du das Event OnComm() übersehen?

Damit solltest du doch alles notwendige implementieren können.

Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:35 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