Re: empfangen über die serielle schnittstelle Kategorie: Programmierung (von Klaus-Dieter Reiners - 14.03.2003 11:50) | |
Als Antwort auf Re: empfangen über die serielle schnittstelle von bernd warner - 13.03.2003 14:14
| |
Hallo, es gibt ein schönes Testprogramm. Es befindet sich im CC2-Verzeichnis unter Projectssamplesmore1 und hei�t "com.c2". Es sendet Zeichen an Hyperterminal und gibt die Zeichen auf dem cc2-Display an, die in Hyperterminal einge- geben wurden, also genau das, was gewünscht ist. Für den Fall, dass das Programm nicht zu Hand ist, hier das Listing. /******************************************************************** Anwendungsbeispiel com.c2 - Empfang von Daten ueber die serielle Schnittstelle HWCOM - Anzeige der empfangenen Daten auf dem LC-Display - Senden der empfangenen Daten ueber serielle Schnittstelle HWCOM (Echo) - Verwendung von Zeichenketten - Verwendung der wait - Funktion - Verwendung der loop - Funktion ! CC2-Board mit serieller PC-Schnittstelle verbinden ! 9600 Baud, 8 Datenbits, 1 Stoppbit, keine Paritaet ! Senden und Empfangen auf serieller PC-Schnittstelle ueber Terminalprogramm (z.B. Hyperterminal) ! Verkabelung: CC2-Board PC (RTS <-> CTS) (CTS <-> RTS) RxD <-> TxD TxD <-> RxD GND <-> GND ! CTS-RTS Handshake ! oder Softwarehandshake (kein Protokoll) ohne RTS/CTS-Leitungen, mit JP6 (CTS) gebrueckt Verwendete C2-Module: constant.c2 lcd.c2 hwcom.c2 str.c2 system.c2 vmcode.c2 Verwendete Funktionen: thread wait hwcom.get hwcom.put hwcom.rdx hwcom.send hwcom.setspeed lcd.clear lcd.print str.length str.putint ********************************************************************/ /*******************************************************************/ // das ist der einzige Thread // er wird zyklisch abgearbeitet thread main { // lokale Zeichenkette fuer LCD-Ausgabe string s; // lokale Zeichenkette fuer HWCOM-Ausgabe string t; // lokale Variable vom Typ Integer int i; // Loeschen des Display lcd.clear(); // String s mit Zeichenkette laden s= "Warten"; // Zeichenkette auf LC-Display ausgeben lcd.print(s, str.length(s)); // Baudrate einstellen, Standardeinstellung 9600 Baud hwcom.setspeed(5); // String t mit Zeichenkette laden, Text "Hallo COM" und neue Zeile (n) t= "Hallo COMn"; // Zeichenkette ueber HWCOM ausgeben // Aufruf der Funktion hwcom.send mit den Parametern Zeichenkette und Anzahl der zu sendenden Zeichen // (das PC-Terminalprogramm zeigt die empfangene Zeichenkette "Hallo COM" an) hwcom.send(t, str.length(t)); // Schleife loop { // warten bis Zeichen auf HWCOM empfangen wurde // (Zeichen ist von PC-Terminalprogramm zu senden) wait hwcom.rxd(); // LCD-Anzeige loeschen lcd.clear(); // Zeichenkette leeren s = ""; // Variable i mit Wert des an HWCOM empfangenen Zeichens laden i= hwcom.get(); // empfangenen Wert in Zeichenkette umwandeln und an String s anhaengen str.putint(s, i); // Ausgabe des empfangenen Zeichens auf das LC-Display lcd.print(s, str.length(s)); // warten bis LCD-Ausgabe beendet ist wait lcd.ready(); // Ausgabe des empfangenen Zeichens auf HWCOM (Echo) // (das PC-Terminalprogramm zeigt das Echo des gesendeten Zeichens an) hwcom.put(i); } } ***************************************************************************************** Bei mir hat das auf Anhieb geklappt. Ich hoffe, bei Dir auch. Gru� Klaus-Dieter | |
Antwort schreiben Antworten: |