serielle Schnittstelle ausreden lassen Kategorie: Programmierung Basic (von Henning S. - 21.01.2009 10:20) | ||
| ||
Moin, moin allerseits! Ich bin gerade dabei, mich im Umgang mit der C-Control Mega 128 zu üben und habe dabei auch die Funktionen der seriellen Schnittstelle mal ausprobiert. Das Beispielprogramm RS232_IRQ.cbas lief und ich habe es dann ein wenig modifiziert - und bekam nur noch Garbage am Hyperterminal. ' 105 byte Sende + 20 byte Empfungspuffer + 6 byte interne FIFO Verwaltung Dim buffer(131) As Byte ' Array deklariert '------------------------------------------------------------------------------ ' Hauptprogramm ' Sub main() Dim Text1(40), Text2(5), ausgabe(80) As Char ' Array deklariert Text1="Test Textrn" Text2="rn" ' Init RS232: 9600 bps, 8 Bit, 1 Stop, NP ' 20 byte Empfangspuffer - 105 byte Sendepuffer Serial_Init_IRQ(0,buffer,20,105,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD9600) Serial_WriteText(0,Text2) ' CR und LF ausgeben Serial_WriteText(0,Text1) ' Text über RS232 ausgeben Serial_WriteText(0,Text2) ' CR und LF ausgeben ausgabe = "Hier kommt was aus dem Mikrocontroller raus, was sich der Henning aus" Serial_WriteText(0,ausgabe) Serial_WriteText(0,Text2) ' CR und LF ausgeben ausgabe = "dem Hirn gewrungen hat. Aber mit meinen schreiberischen Fähigkeiten war" Serial_WriteText(0,ausgabe) Serial_WriteText(0,Text2) ' CR und LF ausgeben ausgabe = "das ja noch nie was gewesen." Serial_WriteText(0,ausgabe) Serial_WriteText(0,Text2) ' CR und LF ausgeben Wenn ich ein AbsDelay(100) nach jeder Ausgabe eingefügt hatte, klappte der Code. Aber diese Art der Ausbremsung kann's ja wohl nicht sein. Mit büschen Lesen in der Doku kam ich auf Serial_IRQ_Info(), die (wohl) angibt, wie viele nicht gesendete Bytes im Sendepuffer sind. Wenn ich nun Do While Serial_IRQ_Info(0,RS232_FIFO_SEND)<>0 End While zwischen die Ausgaben schreibe, ist die Bremse weg und es werden alle Zeichen sicher ausgegeben. Vielleicht hilft diese Information ja, wenn man mal mit langsameren Geschwindigkeiten auf der seriellen Schnittstelle arbeiten will (oder muss). Hier noch einmal der endgültige Code. ' 105 byte Sende + 20 Empfungspuffer + 6 byte interne FIFO Verwaltung Dim buffer(131) As Byte ' Array deklariert '------------------------------------------------------------------------------ ' Hauptprogramm ' Sub main() Dim Text1(40), Text2(5), ausgabe(80) As Char ' Array deklariert Text1="Test Textrn" Text2="rn" ' Init RS232: 9600 bps, 8 Bit, 1 Stop, NP ' 20 byte Empfangspuffer - 105 byte Sendepuffer Serial_Init_IRQ(0,buffer,20,105,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD9600) Serial_WriteText(0,Text2) ' CR und LF ausgeben Serial_WriteText(0,Text1) ' Text über RS232 ausgeben Serial_WriteText(0,Text2) ' CR und LF ausgeben Do While Serial_IRQ_Info(0,RS232_FIFO_SEND)<>0 End While ausgabe = "Hier kommt was aus dem Mikrocontroller raus, was sich der Henning aus" Serial_WriteText(0,ausgabe) Serial_WriteText(0,Text2) ' CR und LF ausgeben Do While Serial_IRQ_Info(0,RS232_FIFO_SEND)<>0 End While ausgabe = "dem Hirn gewrungen hat. Aber mit meinen schriftstellerischen Fähigkeiten war" Serial_WriteText(0,ausgabe) Serial_WriteText(0,Text2) ' CR und LF ausgeben Do While Serial_IRQ_Info(0,RS232_FIFO_SEND)<>0 End While ausgabe = "das ja noch nie was gewesen." Serial_WriteText(0,ausgabe) Serial_WriteText(0,Text2) ' CR und LF ausgeben End Sub Gru� Henning | ||
Antwort schreiben Antworten: Re: serielle Schnittstelle ausreden lassen (von Gregor - 27.01.2009 14:57) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum