2015-11-13 1 views
3
import serial 
while True: 
    ser=serial.Serial(port='COM30',baudrate=9600) 
    print "try" 
    s=ser.read(100) #reading up to 100 bytes 
    print s 
ser.close() 

Gestionnaire de périphériques:données de lecture en python à partir d'un port COM

enter image description here
Je suis en train de lire les données du port à l'aide de python. Mais il montre l'erreur:

Traceback (most recent call last): 
    File "new_python.py", line 3, in <module> 
    ser=serial.Serial(port='COM30',baudrate=9600) 
    File "C:\Anaconda\lib\site-packages\serial\serialwin32.py", line 38, in __init__ 
    SerialBase.__init__(self, *args, **kwargs) 
    File "C:\Anaconda\lib\site-packages\serial\serialutil.py", line 282, in __init__ 
    self.open() 
    File "C:\Anaconda\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 'COM30': WindowsError(5, 'Access is denied.') 

***Repl Closed*** 

maintenant de la solution précédente sur la pile, je suis essayé d'utiliser python 32 bits et l'appeler à partir d'un cmd avec admin, mais même erreur priviledges!

Quand je l'essaye Matlab il me montre ceci:

s = serial('COM30') 

    Serial Port Object : Serial-COM30 

    Communication Settings 
     Port:    COM30 
     BaudRate:   9600 
     Terminator:   'LF' 

    Communication State 
     Status:    closed 
     RecordStatus:  off 

    Read/Write State 
     TransferStatus:  idle 
     BytesAvailable:  0 
     ValuesReceived:  0 
     ValuesSent:   0 
+0

Merci pour les gars edit! –

Répondre

0

Regardez comme vous n'avez pas ouvert le port série

ser=serial.Serial(port='COM30',baudrate=9600) 
ser.open() 

également. Que se passe-t-il si vous supprimez la boucle?

+1

Selon [cette réponse] (http://stackoverflow.com/a/6032694/3087339) ce n'est pas nécessaire. Je me demande s'il y a un problème que chaque boucle essayera d'ouvrir le port quand il n'a pas été fermé après la boucle précédente. – elParaguayo

+0

@elParaguayo Ne fonctionne pas sans boucle! –

+0

@elParaguayo OK, je ne le savais pas. – Poonuts

0
import serial 
import time 
ser=serial.Serial(port='COM30',baudrate=9600) 
ser.open() 
while True: 
    print "try" 
    time.sleep(10) 
    s=ser.read(100) #reading up to 100 bytes 
    print s 
ser.close() 

Pouvez-vous essayer ça?

+0

Ne fonctionne pas. Même erreur –

+0

'L'accès est refusé.' : Avez-vous vérifié si un autre service fonctionnait et verrouillait ce port? – drscaon

+0

Comment puis-je vérifier cela? –