Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Comport - serielle Schnittstelle Zeichensatz
Josef-B - Do 19.08.10 14:45
Titel: Comport - serielle Schnittstelle Zeichensatz
Hallo,
bei der Umstellung von Delphi 2007 auf Delphi 2010 habe ich Probleme mit dem Datenempfang bei der seriellen Schnittstelle.
Ich nutze die Comport Komponente von HBTapi.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TFHaupt.ComportReceive(Sender: TObject; Count: Integer); var data: string; begin data := comport.ReadStr(Count); memo1.lines.add(data); end; |
so wie oben klappte es in Delphi 2007
in 2010 werden in dem Memo nur abweichende Zeichen dargestellt.
Moderiert von
Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
elundril - Do 19.08.10 14:51
Weil String in Delphi2007 ungleich String in Delphi2010 ist. ;) Stichwort Unicode. Demnach müsstest du data als AnsiString deklarieren.
lg elundril
Josef-B - Do 19.08.10 15:12
danke elundril für die sehr schnelle Antwort.
Wenn ich "data" als Ansistring deklariere, werden die Zeichen zwar anders angezeigt, aber es sind auch nicht die "normalen" lesbaren Zeichen.
Wenn ich den Comport über hyperterminal auslesen, kommen lesbare Zeichen.
Kann es sein, dass delphi 2010 die Bytes aus dem Comport anders interpretiert?
elundril - Do 19.08.10 15:25
Dann musst du auch natürlich statt ReadStr(Count) einfach ReadAnsiStr(Count) verwenden. Hättest du leicht in der Online-Hilfe vom Hersteller nachlesen können. ;)
lg elundril
Josef-B - Do 19.08.10 16:44
ja ich habe mir die neueste Version nun installiert.
Leider gehts auch nicht mit ReadAnsiStr.
Genau das gleiche wie vorher.
elundril - Do 19.08.10 16:48
Hmm, dann bin ich auch ratlos. Hab die Komponente selbst nie verwendet, tut leid.
Josef-B - Do 19.08.10 18:49
Gibts ne Alternative?
Wie programmiert ihr die serielle Schnittstelle?
Reinhard Kern - Do 19.08.10 19:59
Josef-B hat folgendes geschrieben : |
Gibts ne Alternative?
Wie programmiert ihr die serielle Schnittstelle? |
Hallo,
nach dem WIN32-API, auch wenn das hier nicht als Programmieren anerkannt ist. Um genau zu sein, ich schreibe mir jeweils meine eigene Klasse, weil man in der Praxis immer nur einen Bruchteil der möglichen Funktionen braucht. Meistens kommt man mit Konstruktor, Destruktor und einer passenden Version von send und receive aus. Problematisch ist bloss der Konstruktor wegen der vielen Einstellungen.
Komponenten, die alle Möglichkeiten der seriellen Übertragung berücksichtigen, lohnen sich in den meisten Fällen nicht wirklich, weil die Einarbeitung mindestens genauso aufwendig ist wie in das direkte API.
Gruss Reinhard
Josef-B - Fr 20.08.10 07:00
Hallo Reinhard,
bin in Delphi eher der Praktiker. Ich nutze es für meinen eigenen Laden.
Ich möchte eine Waage anbinden.
Gibt es für die API-Geschichte ein Tutorial oder was anderes, wo ich mir das abschauen kann?
Ich muss auch nur ASCII Zeichen auslesen und senden. Ist eigentlich ne einfache Anwendung.
Moderiert von
Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Reinhard Kern - Fr 20.08.10 13:10
Josef-B hat folgendes geschrieben : |
Gibt es für die API-Geschichte ein Tutorial oder was anderes, wo ich mir das abschauen kann?
|
Hallo,
ich zitiere einen nickdmax, Moderator von
http://www.dreamincode.net, besser kann ich es auch nicht formulieren:
Indeed the windows API is really all you need for serial communication:
http://msdn.microsoft.com/en-us/library/ms810467.aspx
There really is nothing particularly hard about using the API's. There are also some 3rd party libraries (open source I believe) that can map a USB device to COM ports allowing one to use the serial API to communicate with USB devices (not really sure how this works but it is how my cellphone's drivers work -- I have been thinking about trying to use this to get data off of my old digital camera).
You can get LOTS of example of using the serial port by just going to sourceforge.net and searching for "Serial Port Communications" -- plenty of open source examples.
Another way to research example is to use Google Code Search or Koders -- Use MSDN to get the names of functions used and then use Google CS/Koders to search for uses of that function.
On sourceforge you can also find lots of libraries that wrap the API and make it a little easier to use.
Gruss Reinhard
Josef-B - Fr 20.08.10 13:19
Danke,
werde mich damit dann mal beschäftigen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!