-         

Ergebnis 1 bis 3 von 3

Thema: ReadFile und WriteFile mit RN-MEGA2560

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.09.2009
    Beiträge
    164

    ReadFile und WriteFile mit RN-MEGA2560

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    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

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.09.2009
    Beiträge
    164
    Hat denn hier keiner einen RN-Mega2560 Controller und kann mir seinen ReadFile und WriteFile als Beispiel zusenden?

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.09.2009
    Beiträge
    164
    ---vielleicht hat einer einen RN-Control und schickt mir freundlicherweise seinen C++ -Code mit ReadFile und WriteFile zu? Bitte, Bitte.

Ähnliche Themen

  1. MEGA2560 ADC
    Von oratus sum im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 19.09.2009, 01:50
  2. Portproblem am RN-Mega2560
    Von Suggarman im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 12.03.2009, 11:22
  3. RN-Mega2560 Modul mit 9,2V ?
    Von Blaner im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 06.09.2008, 18:46
  4. Mega2560 und lcd
    Von torsten1300 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 17.02.2007, 23:26
  5. LPT Schnittstelle via CreateFile und WriteFile
    Von clone im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 6
    Letzter Beitrag: 31.03.2005, 10:56

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •