Re: Serielle Daten in die CC schreiben Kategorie: Programmierung C (von Endress - 3.12.2009 13:40) | ||
Als Antwort auf Serielle Daten in die CC schreiben von Endress - 3.12.2009 11:22 | ||
| ||
ok vergesst das mit dem Absturz, am anderen Rechner funktioniert es ohne Abstürze. Aber über ein paar Tips in Sachen Auswertung in C würde ich mich trotzdem freuen. Es funktioniert auch das Orginalbeispiel aus dem Buch vom Ulli nicht : Der Port funktioniert, das habe ich schon getestet, aber egal was ich eingebe, er springt mir nicht in die IF Anweisung, als wenn er nie eine 1 bekommen würde. Wo liegt das Problem ? Meine Versuche, den Eingebenen Wert wieder auszugeben quittiert Hyperterm mit Stillstand. 'RS232_Input #define LED1 8 #define PortC0 16 #define PortC1 17 #define PortC2 18 Dim buffer(80) As Byte Dim Text(40) As Char Dim count, sz As Integer Dim Command As Byte Dim Daten_Buffer(10) As Byte Dim Buffer_Index As Integer Dim ADC_0 As Word Dim ADC0_Str(5) As Char 'Hauptprogramm Sub main() SPI_Disable() Serial_Init_IRQ(0,buffer,20,80,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD19200) Command = 0 'Ports konfigurieren Port_DataDirBit(PortC2,1) Port_DataDirBit(LED1,1) Port_WriteBit(LED1,0) AbsDelay(500) 'Info Lab Infotext NEWLINE() Text = "C-Control PRO Ein-/Ausgabe" PRINTLN(Text) Text = "**************************" PRINTLN(Text) NEWLINE() Text = " 1 = PortC2 EIN" PRINTLN(Text) Text = " 2 = PortC2 AUS" PRINTLN(Text) Text = " 3 = LED1 OFF" PRINTLN(Text) NEWLINE() Port_WriteBit(PortC2,1) AbsDelay(200) Port_WriteBit(PortC2,0) Do While True RS232() Text(1)=Command Serial_WriteText(0,Text) '#1 = ADC0 einlesen If Command = 1 Then Command = 0 Text = "C2 EIN" PRINT(Text) Port_WriteBit(PortC2,1) Goto Infotext End If '#2 = LED1 ON If Command = 2 Then Command = 0 Text = "C2 AUS" PRINTLN(Text) Port_WriteBit(PortC2,0) Goto Infotext End If '#3 = LED1 OFF If Command = 3 Then Command = 0 Text = "LED1 = OFF" PRINTLN(Text) Port_WriteBit(LED1,0) Goto Infotext End If End While End Sub 'ADC über GetAdc auslesen Sub GetAdc(Channel As Byte) As Word ADC_Set(ADC_VREF_VCC,Channel) 'Uref ist Versorgung 5Volt, andere Möglichkeiten siehe Hilfe Return ADC_Read() End Sub 'ADC0 einlesen Sub ADC_TEST() Port_DataDir(PortA, 0) 'PortA als Eingang! Wichtig für ADC6 und 7 ADC_0 = GetAdc(0) Str_WriteWord(ADC_0,10,ADC0_Str,0,4) PRINTLN(ADC0_Str) End Sub 'RS232 Daten holen Sub RS232() Dim sz As Integer Dim Buffer_Cnt As Integer Buffer_Index = 0 Command = 0 'RX Daten zurücksetzen, damit die 'Routinen max einmal ausgeführt werden Buffer_Cnt = Serial_IRQ_Info(0,RS232_FIFO_RECV) 'Abfrage wieviel Zeichen empfangen wurden If Buffer_Cnt <> 0 Then 'es sind Daten da? Do While True 'jetzt Daten einlesen Buffer_Index = Buffer_Index + 1 'Buffer Index Zähler sz=Serial_ReadExt(0) 'Puffer auslesen If sz <> 13 Then 'CR unterdrücken Daten_Buffer(Buffer_Index) = sz 'Byte in Array übergeben If sz=&H100 Then Exit 'bei 0x100 ist der Puffer leer Else Command = Daten_Buffer(1) 'Daten werden zugeordnet End If End If End While End If End Sub 'NEWLINE Sub NEWLINE() Serial_Write(0,13) Serial_Write(0,10) AbsDelay(10) End Sub Sub PRINT(ByRef serial_text As Char) Serial_WriteText(0,serial_text) AbsDelay(10) End Sub 'PRINTLN Sub PRINTLN(ByRef serial_text As Char) Serial_WriteText(0,serial_text) AbsDelay(10) NEWLINE() End Sub Vielleicht gibt es auch eine einfache Methode drei Zeichen seriell zu übertragen und auszuwerten ? | ||
Antwort schreiben Antworten: Re: Serielle Daten in die CC schreiben (von UlliS - 3.12.2009 17:02) Re: Serielle Daten in die CC schreiben (von Endress - 7.12.2009 13:40) Re: Serielle Daten in die CC schreiben (von UlliS - 7.12.2009 16:48) Re: Serielle Daten in die CC schreiben (von Endress - 9.12.2009 16:24) Re: Serielle Daten in die CC schreiben (von UlliS - 9.12.2009 16:52) Re: Serielle Daten in die CC schreiben (von PeterS - 10.12.2009 17:36) Re: Serielle Daten in die CC schreiben (von Endress - 11.12.2009 22:39) Re: Serielle Daten in die CC schreiben (von PeterS - 12.12.2009 12:11) Re: Serielle Daten in die CC schreiben (von UlliS - 12.12.2009 12:42) Re: Serielle Daten in die CC schreiben (von Endress - 14.12.2009 12:55) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum