Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > 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 > > 'PRINT > 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 ?