![]() |
TComPort Problem
Hallo DP,
ich probiere gerade mit TComport von ![]() Ich mache das so:
Delphi-Quellcode:
Comport wurde davor geöffnet. Daneben überwache ich das noch über die im Paket enthaltene Terminalkomponente. Doch leider schickt mein Delphiprogramm, wenn ich es so mit dem Code oben mache nur &B.
comport1.writestr('&B00110011');
weiß auch nicht warum. Kann mir jmd. helfen? Wäre echt nett. |
AW: TComPort Problem
Bei TComport kann soviel eingestellt werden daß es manchmal mühssm ist die richtige Einstellung für empfindliche Geräte zu finden.
Vielleicht hast Du auch nur ein Unicodeproblem, nimm AnsiStrings. |
AW: TComPort Problem
Zeig mal Deine Einstellungen oder ein Stück Kode.
Als Hinweis: Für erste Versuche Flowcontrol ausschalten Gruß Erich |
AW: TComPort Problem
Ich weiss nicht, ob du das schon getan hast, aber es gibt bei RS232 etwas Wichtiges zu beachten.
Teste die RS232-Verbindung mit einem Terminalprogramm (z.B. Hypherterminal)!! Dazu die Kommandos in eine TXT-Datei speichern und mit ASCII-Transfer (Hypherterm: Übertragung->Textdatei senden) wegschicken. Erst wenn das funktioniert hat, sprich wenn du erfolgreich Kommandos in deinen Controller übertragen hast, darfst du mit der TComPort Komponente arbeiten. Bei RS232 können so viele Dinge schiefgehen, dass es sehr ungeschickt wäre, nicht zuvor einen Test mit einem Terminalprogramm durchzuführen. Dies gilt überigens für jede Art von Kommunikation (TCP/IP, UDP, HTTP, SOAP,...). Man beginnt immer mit einem fertigen Client und geht dann erst zum eigenen Programm über. |
AW: TComPort Problem
Mit einem Terminalprogramm funktioniert auch alles. Damit hab ich alles getestet und damit die Software für den AVR entwickelt.
Im Terminalprgramm sieht es so aus:
Code:
Und funktioniert auch.
feld>2
muster>&B00110011 |
AW: TComPort Problem
Zitat:
Wie sieht's denn damit aus? Da kannst das Projekt auch in ein anderes Verzeichnis kopieren und dann zum Test an deine Belange anpassen. |
AW: TComPort Problem
Mit dem Beispiel klappts auch. Doch ich möchte das nicht mit der Terminalkomponente machen sondern einfach nur mit Comport.
So ist mein Code vom Button:
Delphi-Quellcode:
Edit1.Text = 2
var s:ansistring;
begin comPort1.Write(pchar(edit1.Text),1); comport1.Write(#13,1); s := ansistring(edit2.Text); comport1.WriteStr(s); comport1.Write(#13,1); Edit2.Text = &B00110011 Im Terminal siehts dann so aus:
Code:
Aber bei Muster sollte der ganze Text ausm Editfeld stehen.
feld>2
muster>&B feld> |
AW: TComPort Problem
Bei Write heißt der 2. Parameter (wo Du die 1 übergibtst) "Count". Ich vermute, dort wird die Länge des Strings erwartet:
Delphi-Quellcode:
comPort1.Write(pchar(edit1.Text),length(edit1.text));
|
AW: TComPort Problem
Bei genauer hinschauen hättest du gesehen, dass das nicht an write liegt sondern erst bei writestr und die ist anders aufgebaut
|
AW: TComPort Problem
Ich hab jetzt nicht alles genau durchgelesen.
Aber - handelt es sich hier um ein ASCII-Protokoll? Denn nur dann kannst Du WriteString() anwenden. Also kann der Empfänger (was oder wer ist das überhaupt?) ASCII interpretieren?. Edit: Satz zu Ende geschrieben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:19 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