Hallo zusammen,

ich bin am verzweifeln

Ich habe ein RN-Mega 2560 und möchte vom PC aus Daten senden und empfangen.

Wenn ich zum ersten mal den Wert 127X1 sende kann ich diesen Wert auch empfangen. Beim zweiten Durchlauf klappt das Senden wohl auch, aber das Empfangen klappt nicht. Ich empfange immer Schrott, z.B. 127XÌÌÌÌ.

Das Senden und Empfangen sieht so aus:

Code:
    if(!WriteFile(hSerial, &write_char, laenge_write_char, &dwBytesWrite, NULL))
            {
                //error occurred. Report to user
                msgboxIDss = MessageBox(NULL, (LPCWSTR)L"Fehler bei WriteFile!",
                    (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION);
                EndDialog(hwnd, 1);
                return TB_ERROR;
            }
            else
            {
                string_parameter_write = write_char;
                int laenge_string_write = string_parameter_write.length() - 2;
                string_parameter_write2 = string_parameter_write.substr(laenge_string_write,2);
                                
                int laenge_write_r = strlen ("\r");
                
                if(!WriteFile(hSerial, "\r", laenge_write_r, &dwBytesWrite, NULL))
                {
                    //error occurred. Report to user
                    msgboxIDss = MessageBox(NULL, (LPCWSTR)L"Fehler bei WriteFile!",
                        (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION);
                    EndDialog(hwnd, 1);
                    return TB_ERROR;
                }
                else
                {
                    string_fehlerfrei_gesendet = "Ja";
                }
                
            }
        }while(string_fehlerfrei_gesendet == "Nein" );

        string_fehlerfrei_gesendet = "Nein";

        int do_zaehler = 1;
        do // Ausführen bis der empfangene Wert der Achse, etc. gleich des gesendeten Wertes der Achse ist
        {
            do_zaehler ++;
            int laenge_read_buffer = sizeof (dwBytesRead);
            //read_buffer[8] = ' ';
            if(!ReadFile(hSerial, &read_buffer, 7, &dwBytesRead, NULL))//n, &dwBytesRead, NULL))
            {
                //error occurred. Report to user.
                msgboxIDss = MessageBox(NULL, (LPCWSTR)L"Fehler bei ReadFile!",
                    (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION);
                EndDialog(hwnd, 1);
                return TB_ERROR;
            }

            // Achsenwert übergeben
            string_parameter_read = read_buffer;
Das Programm auf dem Controller sieht so aus:

Code:
$prog , 255 , &B11011100 ,                                  '&B11011001 ,                                  'Quarz an / Teiler aus / Jtag aus
$regfile = "m2560def.dat"
$hwstack = 82                                               '80
$framesize = 68                                             ' 64
$swstack = 68                                               '44
$crystal = 16000000                                         'Quarzfrequenz
Config Pind.5 = Output
Led Alias Portd.5
$baud = 19200


'Config Com1 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'Config Com2 = 38400 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com3 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'Config Com4 = 38400 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'Open "com1:" For Binary As #1                               'RS232
'Open "com2:" For Binary As #2                               'RS232
Open "com3:" For Binary As #3                               'RS232
'Open "com4:" For Binary As #4                               'RS232



Dim Eingabe As String * 50
Dim Ausgabe As String * 6

Dim String1 As String * 3
Dim String2 As String * 2

Dim X1_position As Integer
Dim Y1_position As Integer
Dim Z1_position As Integer

Config Porth = Output
Out1 Alias Porth.0
Out2 Alias Porth.1
Out3 Alias Porth.2
Out4 Alias Porth.3
Out5 Alias Porth.4
Out6 Alias Porth.5
Out7 Alias Porth.6
Out8 Alias Porth.7

Declare Sub Daten_empfangen()
Declare Sub Daten_senden()

Do

  Led = 0
  Call Daten_empfangen()
  Led = 1
  Call Daten_senden()

Loop

End

Sub Daten_empfangen()

  Input Eingabe
  String1 = Mid(eingabe , 1 , 3)
  String2 = Mid(eingabe , 4 , 2)
  Ausgabe = String1 + String2 + Chr(13)

  If String2 = "X1" Then
     X1_position = Val(string1)
  End If

  If String2 = "Y1" Then
     Y1_position = Val(string1)
  End If

  If String2 = "Z1" Then
     Z1_position = Val(string1)
  End If

End Sub

Sub Daten_senden()

  If Ausgabe = "127X1" Then
     Led = 0
     Waitms 20
     Led = 1
     Waitms 20
     Led = 0
     Waitms 20
     Led = 1
     Waitms 20
     Led = 0
     Waitms 20
     Led = 1
     Waitms 20
     Led = 0
     Waitms 20
     Led = 1
     Waitms 20
  Else
     Led = 0
     Wait 2
     Led = 1
     Wait 2
  End If

  Print Ausgabe

End Sub
Ich krieg es einfach nicht hin. Vielleicht hat ja jemand einen Tip.

Grüße

datatom