Entwickler-Ecke
Sonstiges (Delphi) - Tcomport byte senden an Microcontroller
blacktiger - So 14.05.06 21:37
Titel: Tcomport byte senden an Microcontroller
Hallo Mitglieder!
Ich benutze seit einigen Wochen die Komponente Tcomport. Leider weiß ich immer noch nicht, wie ich ein Byte (also zahlen von 0-255) über die Serielle schnittstelle senden kann. Bis her klappt es bei mir nur mit dem senden von strings. Aber damit ich einen Microcontroller steuern kann, muss ich ein byte senden können.
Ich bitte dringend um Hilfe!
Vielen dank vorraus!
Schau
Blacktiger
aim65 - So 14.05.06 22:43
Komisch, die serielle Schnittstelle ist eigentlich Byte-orientiert. Ich habe noch nicht mit Tcomport gearbeitet, aber in der Dokumentation folgendes gefunden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TComport.SENDBYTE (Dat: Integer); var BytesWritten: DWord; begin WriteFile(PortHandle,Dat,1,BytesWritten,NIL); END;
function TComport.READBYTE(): Integer; var Dat: Byte; BytesRead: DWORD; begin ReadFile(PortHandle,Dat,1,BytesRead,NIL); if BytesRead = 1 then Result:=Dat else Result := -1; end; |
Man könnte ja auch evtl. den Sendepuffer auf eine Länge von 1 setzen:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TComport.BufferSize(Size : Integer); begin SetupComm(PortHandle,Size,Size); end; |
Aber, wie gesagt, nur so ein Gedanke, wie du weitergehen könntest. :idea:
blacktiger - So 14.05.06 22:48
Hallo
Danke für die schnelle antwort!
Ich möchte fragen, wo du dieses Beispiel programm hast. Ich möchte gerne das Ganze im zusammenhang sehn
Vielen dank vorraus.
Grüße
blacktiger
aim65 - So 14.05.06 22:56
Käse, habe ich irgendwo heruntergeladen - finde aber die URL nicht. Mußt noch ein paar Minuten warten - hoffentlich finde ich das noch. Ist offensichtlich das Listing der Tcomport-Komponente.
blacktiger - So 14.05.06 23:14
Hi
Ja Ich war ganz zu anfang, als ich mit dem Projekt begonnen habe (GPS-Autosteuerung) schon auf der Seite gewesen, leider verstehe ich nicht alles , was das erläutert wurde.
Ich verstehe zum beispiel nicht, was Porthandle bedeutet und überhaupt die meisten Parametern , die dahinterfolgen. Daher hatte ich die seite aus meinen gedächtnis getrichen. Hast du eine ahnung, wie das geht?
Ich benutze nämlich die komponente Tcomport, die gibst bei Torry als freeware.
das lesen der Daten klappt einwandfrei und das quellcode ist nur 1-2 zeile lang, aber ich weiß halt nicht mit dem senden von bytes.
da du auch sowas vor hast, könne wir gemeinsam das problem lösen, wenn du daran interrsiert bist.
bis die tage
blacktiger
aim65 - Mo 15.05.06 00:16
Ich fürchte, daß ich da z. Zeit nicht weiterhelfen kann, da ich ja noch nix in der Praxis gemacht habe (habe Tcomport noch nicht installiert). Es gibt ja mittlerweile viele Versionen von Tcomport - meistens von Dejan Crnila. Da sind meistens auch Demo-Programme in den ZIPs enthalten.
Meine Fragen: Hast du Tcomport als Komponente installiert?
Wenn ja, welche (war's "Dccomms.zip"?)
Ist sie im Objekt-Inspektor sichtbar?
Wie hast du bisher die (string-) Daten erfolgreich gesendet? (poste mal den Teil)
Ich kann leider hier natürlich noch nichts praktisch nachvollziehen. Aber ich könnte die Komponente, die du hast, hier mal installieren. Allerdings habe ich hier nur D3 verfügbar.
Also kann ich nur anhand deiner Sources überhaupt was machen.
So, für heute muß ich leider abklemmen - werde das aber auf jeden Fall verfolgen.
Gruß, Horst
blacktiger - Mo 15.05.06 18:43
Hi aime65
Schön dass du auch daran interriert bis!
Meine Komponente heißt Cport251 hab sie vor ca. 1 Monat runtergeladen.
Leider weiß ich nicht mehr, wo ich sie runtergeladen habe, sorry!
Mehr infos, wie man mot der Komponente umgeht erfähst du bei:
http://petit.developpez.com/serie/cours_tcomport/
Beispiel: lesen von String
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure Tform1.comport1RxChar (Sender: TObject; Count: Integer); begin Ansistring( daten); ComPort1.ReadStr(daten,Count); memo1.text:= memo1.text + daten; end; |
daten ist vom Typ string ; count braucht man nicht deklarieren.
Die procedure umbedingt im Type Declarieren und dann im objektinspector auf event sie aktivieren.
Viel spaß damit
Blacktiger
Moderiert von
raziel: Delphi-Tags hinzugefügt
aim65 - Mo 15.05.06 21:40
Da bin ich wieder. :D
Vielen dank für die Info. Alle diese Tcomport-Versionen (auch die neueren) gibts hier:
http://sourceforge.net/projects/comport/
Dein Link ist interessant, aber ich hab keine Lust mehr, Französisch zu lernen... :wink:
Diese komponenten sind "high-level", d.h., für die komfortable Datenkommunikation z.B., mit einem Modem ausgelegt. Daher gibts offensichtlich keinen low-level Befehl zum Senden/Empfangen eines einzelnen Bytes. Aber was hindert dich daran, einen String mit nur einem Byte Länge zu senden? Du kannst ja einen Zahlenwert von 0..255 (0..$FF) in einen String der Länge 1 umwandeln und mal probieren, ob's über
"ComPort1.WRITEStr(daten,Count);"
funktioniert. (Count auf 1 setzen). Ich kanns ja aus den schon erwähnten Gründen nicht probieren. Ist vllt überflüssig, aber die kleine Testroutine zeigt mal, was ich meine:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button1Click(Sender: TObject); var nr: byte; st: string; begin nr := StrToInt(Edit1.Text); st := chr(nr); Label1.Caption := 'Zeichen= '+st; end; |
Das Listing aus Kaiserslautern ist keine Komponente, sondern nur eine Unit. Aber es war und ist immer noch das interessanteste Paket für meine zukünftigen Aktivitäten, da es als low-level Programm den direkten Zugriff auf Byte-Ebene erlaubt (glaube ich jedenfalls). Das ist eigentlich genau das, was für Steuerungen benötigt wird. Irgendwann werde ich mich mal dran machen - hat aber niedrige Priorität (muß erst mal wieder einen alten Laptop mit RS-232 Port reaktivieren). Übrigens, "Handle" ist für die meisten Anwendungen transparent. Ist nur eine Identifikationsnummer zum Kommunizieren der Kompo / Unit mit Windows-Routinen.
Ich hoffe, das hilft dir ein Stückechen weiter. Ich vermute, daß du irgendein Board am RS232-port hängen hast, mit dem du testen kannst was herauskommt. Leider kann ich nicht mehr dazu beitragen. Vielleicht gibt's ja hier im Forum noch ein paar Andere, die da schon mehr Erfahrung haben. Zumindest habe ich in anderen Foren (via Google) gesehen, daß noch mehr Leute Probleme mit Tcomport haben.
Viel Spaß :lol:
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!