PySerial und Andere

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pythonaya
User
Beiträge: 90
Registriert: Sonntag 26. Januar 2003, 11:34
Wohnort: Großbeeren (nahe Berlin)

Hi @ all!
Ich habe ein Problem, wenn ich das PySerial-Modul mit Python 2.4 (+win32all) unter Windows XP laufen lasse.

Fehlermeldung:

Code: Alles auswählen

>>> from serial import*
>>> s = Serial(0)

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in -toplevel-
    s = Serial(0)
  File "C:\Programmieren\Python24\Lib\site-packages\serial\serialutil.py", line 153, in __init__
    self.open()
  File "C:\Programmieren\Python24\lib\site-packages\serial\serialwin32.py", line 55, in open
    raise SerialException("could not open port: %s" % msg)
SerialException: could not open port: (2, 'CreateFile', 'Das System kann die angegebene Datei nicht finden.')
>>> 
Kann mir vielleicht jemand weiterhelfen?
Es ist ziemlich wichtig...

Danke schonmal im Vorraus,
Florian
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Hallo Pythonaya,

ich nehme an, daß s = Serial(0) Deinen Com1 öffenen will (Hab schon lange nichts mehr mit dem Modul gemacht).
Wenn dem so währe, ist es dann vieleicht möglich, daß ein anderes Programm bereits Deinen Comport benutzt. Z.B. irgendeine Dockingstation, Palm oder sowas in der Art?

Gruß
alpha
Gast

Nein, eigentlich nicht...

ich habe in den letzten Tagen etwas rumprobiert und herausgefunden, dass ihm das win32file-Modul fehlt. Das ist recht komisch, weil ich das ganze win32all-Package installiert habe.

Gibt es vielleicht noch andere Möglichkeiten den Com-Port anzusteuern?
Dieser Source-Code gibt bei mir die gleiche Fehlermeldung aus:

Code: Alles auswählen

import win32file

def clearcom1receivebuf(comhandle):
    # clear out unwanted data from previous transmissions to com1
    win32file.PurgeComm(comhandle, win32file.PURGE_RXCLEAR)

def closecom1(comhandle):
    comhandle.Close()

def opencom1():
    # returns a handle to the Windows file
    return win32file.CreateFile(u'COM1:', win32file.GENERIC_READ, \
                                0, None, win32file.OPEN_EXISTING, 0, None)

def readcom1line(comhandle):
    err = 0
    char = None
    line = ''
    while err == 0 and char != '\r':
        err, char = win32file.ReadFile(comhandle, 1, None)
        if err == 0:
            if char == '\n':
                pass # eat newlines
            else:
                line = line + char
        else:
            break
    return line

if __name__ == '__main__':
    # demo
    comhandle = opencom1()
    print readcom1line(comhandle)
    closecom1(comhandle)
Hat jemand eine Idee?

MFG,
Florian

Edit (Leonidas) Code in Python Tags gesetzt
Gast

Habe ebend mal schnell win32file importiert und er hats gefunden...
Hat noch jemand eine Idee?
antimicro
User
Beiträge: 151
Registriert: Sonntag 29. Februar 2004, 16:24

Es gibt noch das USPP Modul. Damit hab ich mal eine 3D Bewegungsplattform angesteuert. So ein Riesending. Die Steuerung brauchte eine flüssige Datenübertragung. Hat auch prima geklappt. Allerdings hat WindowsNT immer zicken gemacht, unter Linux klappte das besser.

Aber zurück zu deinem Problem! Da du eine zum Teil dt. Fehlermeldung bekommst wird das wohl am Betriebssystem liegen. Hast du SP1 oder SP2 Installiert? Bist du Administrator oder nur Benutzer?
greetings
sebi
Pythonaya
User
Beiträge: 90
Registriert: Sonntag 26. Januar 2003, 11:34
Wohnort: Großbeeren (nahe Berlin)

Ich bin Admin und hab das SP2 auf meinem Notebook installiert...
Da ich keine COM_Schnittstelle am Notebook habe benutze ich eine USB-Dockingstation.

Aber trotz der Dockingstation müsste es doch eigentlich klappen?
Der Treiber der Dockingstation emuliert doch einen COM-Port, oder...


Danke,
Florian
antimicro
User
Beiträge: 151
Registriert: Sonntag 29. Februar 2004, 16:24

Wenn der Laptop den emuliert und einen seriellen Port zur verfügung stellt sollte das in der Tat klappen.

Ich hab auch WinXP mit SP2 installiert und bin als Admin eingeloggt. Bei mir zickt das nicht.

Ich hab bei mir noch eine kleinigkeit installiert. Ist ein "Port Treiber" für ein LC Display. Vielleicht ... port95nt.exe. Versuch einfach mal
greetings
sebi
Antworten