Hallo,
mal wieder ein kleines RS232-Problem über das ich seit zwei Tagen brüte...
Über einer Konsolenanwendung in C (selbsterstelltes Programm in CodeBlocks) sende ich Zeichen, Bytes und Strings zu meinem Mikrocontroller.
Der Mikrocontroller ist in Bascom programmiert, tut aber eigentlich nichts weiter zur Sache.
In dem C Programm gebrauche ich die Header-Datei rs232.h.
Kleines Schema der Programms, das auf dem PC arbeitet:
Code:
#include "rs232.h"
int main(){
unsigned char zeichen;
int COM=2; *\Entspricht COM3\*
if(OpenComport(COM,19200)){
printf("COM3 nicht erreichbar!");}
else{
printf("COM3 aktiv!");}
printf("Bitte ein zu sendendes Zeichen eingeben: ");
fflush(stdin);
scanf("%c",&zeichen);
SendByte(COM,zeichen);
printf("\n");
}
So in etwa sieht das PC-Programm aus.
Das µC-Programm (eigentlich mit LCD Display) in BASIC als Schema:
Code:
$baud=19200
Dim Empangen as Byte
Cls
Locate 1,1
Lcd "Empangen:"
Do
If Ischarwaiting() = 1 Then
Empangen = Inkey()
Locate 2,1
Lcd Empangen
Loop
End
Folgendes Problem habe ich:
Wenn ich den USB/RS232-Wandler in den USB-Port einstecke und dann ein Zeichen von meinem C-Programm in den µC schicken möchte erscheint auf meinem LCD-Display immer eine 0
nachdem ich das Zeichen gesendet habe. Das heißt ja eigentlich, dass mein µC etwas empfangen hat, das aber nur eine 0 ist, die aus dem Puffer geholt wurde.
Das Problem habe ich solange, bis ich ein Zeichen über das RS232-Terminal in Bascom sende. Egal ob ich eine 0,1,2,3.... sende, nachdem ich über das Terminal ein Zeichen versandt habe, kann ich auch über mein C-Programm ein Zeichen senden, welches dann korrekt auf dem LCD erscheint.
Nach einem Neustart des Controllers bleibt das immernoch so. Wenn ich allerdings den USB/RS232 Adapter entferne und neu einstecke, kommt das selbe Problem wieder bis ich ein Zeichen über das Terminal sende.
Ich hab so viel probiert...Hat jemand eine Idee was das ist???
Danke! =)
Lesezeichen