pyserial erreur - impossible d'ouvrir le port
J'ai vu un code simple en stackoverflow à l'aide de pyserial ports USB avec Python 3.3, mais je ne peux pas obtenir que cela fonctionne sur ma nouvelle installation de pyserial 2.7 [dans Windows 7, 64 bits, avec 3 ports USB]. Installation de pyserial s'est bien passé, je peux importer sans erreur et méthodes sont reconnues dans le Pyscripter IDE qui renforce la confiance en une bonne installation, cependant:
Le code dépouillé de son erreur en produisant essentials est:
import serial
def main():
ser = serial.Serial(port='COM2')
ser.close()
if __name__ == '__main__':
main
À partir de ce que je reçois une boîte de dialogue avec le message d'erreur "SerialException: impossible d'ouvrir le port COM2': FileNotFoundError(2, " Le système ne peut pas trouver le fichier spécifié.',Aucun,2)"
Le Traceback états:
*** Remote Interpreter Reinitialized ***
>>>
Traceback (most recent call last):
File "<string>", line 420, in run_nodebug
File "C:\Python33\Lib\site-packages\scanport2.py", line 19, in <module>
main()
File "C:\Python33\Lib\site-packages\scanport2.py", line 15, in main
ser = serial.Serial(port='COM2')
File "C:\Python33\Lib\site-packages\serial\serialwin32.py", line 38, in __init__
SerialBase.__init__(self, *args, **kwargs)
File "C:\Python33\Lib\site-packages\serial\serialutil.py", line 282, in __init__
self.open()
File "C:\Python33\Lib\site-packages\serial\serialwin32.py", line 66, in open
raise SerialException("could not open port %r: %r" % (self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port 'COM2': FileNotFoundError(2, 'The system cannot find the file specified.', None, 2)
Et le segment de code dans le module importé, ce qui soulève le SerialException est:
# the "\\.\COMx" format is required for devices other than COM1-COM8
# not all versions of windows seem to support this properly
# so that the first few ports are used with the DOS device name
port = self.portstr
try:
if port.upper().startswith('COM') and int(port[3:]) > 8:
port = '\\\\.\\' + port
except ValueError:
# for like COMnotanumber
pass
self.hComPort = win32.CreateFile(port,
win32.GENERIC_READ | win32.GENERIC_WRITE,
0, # exclusive access
None, # no security
win32.OPEN_EXISTING,
win32.FILE_ATTRIBUTE_NORMAL | win32.FILE_FLAG_OVERLAPPED,
0)
if self.hComPort == win32.INVALID_HANDLE_VALUE:
self.hComPort = None # 'cause __del__ is called anyway
raise SerialException("could not open port %r: %r" % (self.portstr, ctypes.WinError()))
J'ai un actif de dispositif connecté à COM2 identifiés dans le gestionnaire de périphériques de Windows. J'ai aussi essayé l'analyse de tous les ports, mais le code s'arrête sur la première utilisation de la série.Série
Cela semble que quelque chose ne va pas avec win32?
Je suis un newbie pour l'interfaçage Python avec le matériel.
J'ai trouvé que l'utilisation de la
\\.\COMx
format a été nécessaire pour le port COM8
faire un "pip freeze" à l'invite de commande pour chaque système. si vous avez les différentes versions de pyserial, qui peuvent être la cause de racine. Le port com références changé à partir de 2.x à 3.x (a integer, maintenant string), c'est à dire, si votre nouvelle installation a pyserial 2.x, vous aurez besoin d'appeler "ser = numéro de série.Série(port=2)"
OriginalL'auteur user3153016 | 2014-01-02
Vous devez vous connecter pour publier un commentaire.
Je voudrais essayer le suivant:
GLOBAL??
dossier; vous devriez voir COM2 il y a comme un lien symbolique vers quelque chose de plus spécifique au pilote.\\.\USBSER000
pourCOM2
dans votre code, mais n'oubliez pas d'échapper à ces barres obliques inverses correctement.OriginalL'auteur David Grayson
Il ressemble à la pyserial page de téléchargement ne contient que des liens pour la version 32 bits de python? Cette page non officielle semble avoir des liens pour la version 64 bits installations, toutefois, être prudent de l'installation de sources inconnues.
Cette réponse suggère également de l'installer en utilisant
pip
: https://stackoverflow.com/a/8491164/66349OriginalL'auteur Peter Gibson