RS232 echo und Multithread Kategorie: Programmierung C (von ToKu - 1.11.2006 9:57) | ||
| ||
Hallo miteinander! Ich habe versucht aus den Beispielprogrammen zu dem RS232 echo und einer einfachen LED-blink-schleife ein Programm im Multithread zu betreiben. Das funktioniert allerdings nicht! Ich wei� auch nicht woran es liegt, denn einfach ein Threadprogramm bei dem nur zwischen zwei LED-blinkschleifen unterschieden wird geht. Komisch ist das die LED nicht blinkt, aber das RS232echo geht Hier der C-code // Deklaration der Formatierungsvariablen #define LF 0x0A #define CR 0x0D #define SPACE 0x20 //------------------------------------------------------------------------------ void thread1(void) { while(1) { // Ein- und Ausschalten der LED1 Port_WriteBit(PORT_LED1,PORT_ON); // LED1 einschalten Thread_Delay(100); // variable Verzögerung Port_WriteBit(PORT_LED1,PORT_OFF); // LED1 ausschalten Thread_Delay(100); // variable Verzögerung } } //------------------------------------------------------------------------------ // RS_Echo Hauptprogramm // void main(void) { byte c,n,i; // Variablen deklarieren byte Buf_Index; byte Limit; char Buffer[82]; // Arrays deklarieren char Text1[40]; char Text2[40]; Port_DataDirBit(PORT_LED1,PORT_OUT); // LED1 auf Ausgabe vorbereiten Port_DataDirBit(PORT_LED2,PORT_OUT); // LED1 auf Ausgabe vorbereiten //******************* Thread_Start(1,thread1); //void Thread_Start(byte thread,float func) //thread = (0-13) Nummer des Threads, der gestartet werden soll //func = Name der Funktion, in welcher der neue Thread gestartet wird //******************* Port_WriteBit(PORT_LED2,PORT_ON); // LED2 einschalten =>Status led Text1="-- Test serielle Schnittstelle --"; // Werte ins Array Text1 geschrieben. Text2="Text eingeben:"; // Werte ins Array Text2 geschrieben. Serial_Init(0,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD115200); //Init RS232: 115200 bps, 8 Bit, 1 Stop, NP c=0; Buf_Index=0; Limit=80; // maximale Zeichenzahl for (i=0;i<33;i++) Msg_WriteChar(Text1[i]); // Systemausgabe "-- Test serielle Schnittstelle --" Serial_Write(0,CR); // neue Zeile über die RS232 Schnittstelle gesendet Serial_Write(0,LF); // Zeilenvorschub über die RS232 Schnittstelle gesendet while (1) { for (i=0;i<14;i++) Serial_Write(0,Text2[i]); // Ausgabe Terminal: Text eingeben: Serial_Write(0,CR); // neue Zeile über die RS232 Schnittstelle gesendet Serial_Write(0,LF); // Zeilenvorschub über die RS232 Schnittstelle gesendet while (c!=CR) { c=Serial_Read(0); // Zeichen lesen Serial_Write(0,c); // Zeichen ausgeben Buffer[Buf_Index]=c; // Zeichen im Buffer speichern Buf_Index++; if (Buf_Index==Limit) // wenn Buffer voll, alle Zeichen ausgeben { c=CR; Buffer[Buf_Index]=c; Serial_Write(0,CR); // neue Zeile über die RS232 Schnittstelle gesendet Buf_Index++; } } c=0; // CR >> alle Zeichen ausgeben Serial_Write(0,LF); for (n=0;n Serial_Write(0,Buffer[n]); // Bufferinhalt ausgeben } Serial_Write(0,LF); // Zeilenvorschub über die RS232 Schnittstelle gesendet Buf_Index=0; } } | ||
Antwort schreiben Antworten: Re: RS232 echo und Multithread (von ToKu - 1.11.2006 14:23) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum