hallo leute, ich hab da ein problem, ich arbeite das erste mal nem u-Controller und möchte, dass er über eine rs232 schnittstelle mit meinem java-programm kommuniziert. mein problem ist, dass ich nicht weiß, wie ich die daten auf dem u-controller mittels c auffangen soll und die veränderten daten dann zurück schicken soll. vom java programm kommt ein string ==> wird vom u-Controller verarbeiter durch c ==> und schickt dann einen string wieder zurück zum java-programm. kann mir da jemand helfen??? Gruß Falko98
Da können viele helfen, wenn sie den Typ des µC kennen und die benutzte Entwicklungsumgebung für den µC.
Wie schaut Dein Protokoll aus? Zeig mal dein Code was Du hast bisher. UART init usw...
nunja, der controller ist ein at 8051 auf einem demoboard das java-programm habe ich mit netbeans gschrieben und für den code am demoboard arbeite ich mit Keil uVision2 zurzeit habe ich nur den java code, um vernünftig weiter zuarbeiten brauche ich mal eine testversion zum überprüfen, ob es überhaupt funktioniert. im grunde muss ich nur wissen, wie ich die programmierung mache zum empfangen und senden. und wie ich den String rüberbekomme.
> im grunde muss ich nur wissen, wie ich die programmierung mache zum > empfangen und senden Für das Senden und Empfangen am µC schaust du einfach mal ins Tutorial (entweder Asm oder C, am besten beides). Ganz nach oben scrollen, ganz links, unter 'AVR'
Karl Heinz, das nutzt nichts das AVR Tutorial zu lesen denn 8051 ist kein AVR. Keil uVision, du programmierst also in C ? Das Hello World Beispiel Programm (bestandteil des C Compiler) enthält ein UART Beispiel. Reicht es für den Anfang ein "Echo" von der UART zu bekommen ? Hast du überhaupt schon irgendein funktionsfähiges Programm für deinen Controller am laufen z.B. Blinky (ist auch als DEMO dabei) ? Beschreibe bitte deinen Wissensstand.
ich hab schon ein paar programme für den uC ist aber nichts, wo ich über eine rs232 komunizieren muss. Sind einfache Blinklichter/Lauflichter nichts besonderes. Bei dem programm das ich jetzt mache habe ich einen Taschenrechner, über eine java- oberfläche werden die zahlen und die operatoren eingegeben und über rs232 zum uC gesendet. der verarbeitet das dann und zurück bekomme ich ebenfalls über die rs232 das ergebniss. die java- Oberfläche und die berechnung am uC sind nicht das problem. mein problem ist, dass ich nicht weiss, wie ich den String (mit den Zahlen und den Operatoren) auf den uC bekomme und anschließend das ergebniss zurück.
Falko98 wrote: > mein problem ist, dass ich nicht weiß, > wie ich die daten auf dem u-controller mittels c auffangen soll und > die veränderten daten dann zurück schicken soll. C hat dafür keine Funktionen, die mußt Du schon selber schreiben oder Beispiele lesen. Zum Anfang würde ich als Protokoll Text-Daten empfehlen, die mit CR und oder LF abgeschlossen sind. Die liest Du dann in einen Puffer (char-Feld) ein, bis eben CR/LF kommt und hängst noch ne /0 an. Dann kannst Du das Feld bearbeiten, wie Du lustig bist (strncmp, sscanf usw.). Und die einzelnen Bytes wieder senden. Wenn das funktioniert, kann man das Einsammeln und Senden der Bits in den Puffer als Interrupthandler schreiben. Peter
ich hab mal im internet noch ein wenig herumgeschaut und das angefunden: fürs senden: void senden(void) { int u; u=0; l=strlen(test); for(u=0;u<=(l-1);u++) { S1BUF=test[u]; while((S1CON&0x02)==0x00) ; S1CON&=0xFD; } blank_lcd(); print_lcd(1,1,"Gesendet"); } fürs empfangen: void serISR(void) interrupt 16 { if((S1CON&0x01)==0x01) { S1CON&=0xFE; empf[e]=S1BUF; if(empf[e]=='#') { serflag=1; } else e++; } } jetzt ist mein problem, das ich das nicht verstehe. dieses programm ist für ein demoboard gedacht und ich kann mit den ganzen variablen nichts anfagen. kann mir einer von euch erklären, was das ganze bedeutet???
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.