Hallo,
ich versuche gerade von einem JAVA Programm Daten an den Atmega644 zu
schicken, dabei handelt sich es genauer gesagt um Zahlen. Diese Zahlen
sollten, dann am AVR weiterverarbeitet werden.
Hier liegt aber dann das Problem. Ich bekomme die Daten irgendwie nicht
in den richtigen Datentyp.
Zum Senden beim JAVA-Programmm verwende ich:
1 | void sendeSerialPort(String nachricht) {
|
2 | System.out.println("Sende: " + nachricht);
|
3 | if (serialPortGeoeffnet != true)
|
4 | return;
|
5 | try {
|
6 | outputStream.write(nachricht.getBytes());
|
7 | } catch (IOException e) {
|
8 | System.out.println("Fehler beim Senden");
|
9 | }
|
10 | }
|
Aufrufen tue ich es mit:
1 | sendeSerialPort(Integer.toString(sendeWert));
|
Das wichtigste vom AVR-Code sieht wie folgt aus:
1 | int set1, set2;
|
2 |
|
3 | unsigned char USART_Receive( void ){
|
4 | while ( !(UCSR0A & (1<<RXC0)) );
|
5 | return UDR0;
|
6 | }
|
7 |
|
8 | void settings(int setting){
|
9 | if (setting < 0){
|
10 | set1 = setting;
|
11 | set2 = 0;
|
12 | }
|
13 | else{
|
14 | set1 = setting % 10;
|
15 | set2 = setting / 10;
|
16 | }
|
17 | }
|
18 | void main (void){
|
19 | unsigned char setting;
|
20 | InitUSART(103);
|
21 | while(1){
|
22 | setting = USART_Receive();
|
23 | settings(setting);
|
24 | }
|
25 | }
|
Eigentlich möchte ich, wenn ich nun z.B. 13 sende beim AVR set1 = 3 und
set2 = 1 haben, aber irgendwie sind beide immer 0. Hab schon
verschiedenes ausprobiert, aber bekomms nicht hin.
Der USART selbst funktioniert, da wenn ich das ganze z.B. mit HTerm
teste und 13 decimal sende, funktioniert alles wunderbar, nur halt nicht
mit meinem JAVA-Programm. :(
Weiß jemand, wie ich die empfangenen Daten verarbeiten muss ?
LG Paul