www.mikrocontroller.net

Forum: PC-Programmierung GetLastError() - Fehlercodes bei MCHPFSUSB


Autor: Ron Napp (blitzgeist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich benutze die Firmware von Microchip (MP Custom Driver) für meinen PIC 
und die dll mpusbapi.dll für meine GUI. Der Quellcode zeigt das 
error-handling.

void CheckInvalidHandle(void)
{
    if(GetLastError() == ERROR_INVALID_HANDLE)
    {
        // Most likely cause of the error is the board was disconnected.
        MPUSBClose(myOutPipe);
        MPUSBClose(myInPipe);
        myOutPipe = myInPipe = INVALID_HANDLE_VALUE;
    }//end if
    else
        printf("Error Code \r\n",GetLastError());
}//end CheckInvalidHandle

Dies vorab.

Meine Fragen nun:

Wo bekomme ich eine Übersicht der Fehlercodes mit Erklärung her? Also, 
was für Fehlercodes liefert mir die Funktion zurück?

Ist das eigendlich abhängig von der jeweiligen Firmware und der 
zugehörigen DLL? Denke nicht, oder doch?

lg,
blitzgeist

Autor: Ron Napp (blitzgeist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...hat niemand was zu diesem Thema zu sagen?

lg,
blitzgeist

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fehlercodes sowie deren Definition findest Du unter msdn.microsoft.com

Autor: Johannes H. (johannes-kuriboh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fehlercodes und deren beschreibung erhältst Du durch API aufrufe.

In VB sehen sie so aus:
Public Declare Function GetLastError Lib "kernel32.dll" () As Long
Private Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" _
    (ByVal dwFlags As Long, _
    ByRef lpSource As Any, _
    ByVal dwMessageId As Long, _
    ByVal dwLanguageId As Long, _
    ByVal dwBuffer As String, _
    ByVal nSize As Long, _
    ByVal Arguments As Long) _
As Long
Private Function GetErrorString(lasterror As Long) As String
    Dim bytes As Long
    Dim errorstring As String
    errorstring = String$(129, 0)
    bytes = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0&, lasterror, 0, errorstring$, 128, 0)
    GetErrorString = errorstring
End Function

Public Sub MsgError(intern_reference As String, lasterror As Long, mode As String)
    Dim string_of_error As String
    string_of_error = GetErrorString(lasterror)
    If lasterror > 0 Then
        If Not mode = "silent" Then
            MsgBox ("Interne Referenz: " + intern_reference + Chr(10) + Str(lasterror) + Chr(10) + string_of_error)
        End If
    End If
End Sub
Der aufruf sähe beispielsweise so aus:
Call MsgError("Mitten im Code", GetLastError(), "")
GetLastError - holt die fehlernummer
FormatMessage - erzeugt den dazugehörigen text

GetErrorString - bereitet den string auf
MsgError - mach das ganze programmaufruftauglich
GetLastError() - sollte so nah wie möglich an den funktionen aufgerufen 
werden.


Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.