Announcement

Collapse
No announcement yet.

COM9 bis COM256

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • COM9 bis COM256

    Hallo,
    ich möchte gern die serielle Schnittstelle COM9 und höher ansprechen.

    Bei der Funktion

    function TSerial.Open(com:String):THandle;
    var dwErrorWord;
    begin
    hCom := CreateFile(PChar(com), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
    if (hCom = INVALID_HANDLE_VALUE) then begin
    dwError:= GetLastError();
    Application.MessageBox(PChar('Serial open Error ' +
    com + ': (' + IntToStr(dwError) + ' - ' +
    SysErrorMessage(dwError) + ')'),
    PChar(Application.MainForm.Caption), MB_OK);
    PortError:= true;
    PortOpen := false;
    end else begin
    PortError:= false;
    PortOpen := true;
    end;
    result:= hCom;
    end;

    bekomme ich folgende Fehlermeldung:

    Serial open Error COM40: (2 - Das System kann die angegebene Datei nicht finden)

    Was mache ich falsch?

    Herzlichen Dank

  • #2
    Damit es spannend bleibt, antworte ich mir selbt mal wieder

    Die Funktion open habe ich folgendermaßen geändert:

    function TSerial.Open(com:String):THandle;
    var dwErrorWord;
    begin
    hCom := CreateFile(PChar('\\.\'+com), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
    if (hCom = INVALID_HANDLE_VALUE) then begin
    dwError:= GetLastError();
    Application.MessageBox(PChar('Serial open Error ' +
    com + ': (' + IntToStr(dwError) + ' - ' +
    SysErrorMessage(dwError) + ')'),
    PChar(Application.MainForm.Caption), MB_OK);
    PortError:= true;
    PortOpen := false;
    end else begin
    PortError:= false;
    PortOpen := true;
    end;
    result:= hCom;
    end;

    Schnittstellen >COM 8 werden mit vorangestellten \\.\ angesprochen. Ein Test ergab, daß \\.\COM1 bis \\.\COM256 so funktioniert.

    Vielen Dank

    Comment

    Working...
    X