2016-05-18 3 views
2

私はまだPythonで新しくなっていますので、私はpython2-pyserialでスクリプトを書こうとしていますが、エラーが続きますAttempting to use a port that is not openスクリプト:Python serial - 開いていないポートを使用しようとしています

#!/usr/bin/python 

import serial, time 
#initialization and open the port 
#possible timeout values: 
# 1. None: wait forever, block call 
# 2. 0: non-blocking mode, return immediately 
# 3. x, x is bigger than 0, float allowed, timeout block call 
ser = serial.Serial() 
ser.port = "/dev/ttyUSB2" 
ser.baudrate = 115200 
ser.bytesize = serial.EIGHTBITS #number of bits per bytes 
ser.parity = serial.PARITY_NONE #set parity check: no parity 
ser.stopbits = serial.STOPBITS_ONE #number of stop bits 
#ser.timeout = None   #block read 
ser.timeout = 1   #non-block read 
#ser.timeout = 2    #timeout block read 
ser.xonxoff = False  #disable software flow control 
ser.rtscts = False  #disable hardware (RTS/CTS) flow control 
ser.dsrdtr = False  #disable hardware (DSR/DTR) flow control 
ser.writeTimeout = 2  #timeout for write 
try: 
    ser.open() 
    print ("Port has been opened") 
except Exception, e: 
    print ("error open serial port: ") + str(e) 
    exit() 

if ser.isOpen(): 
    try: 
     ser.flushInput() #flush input buffer, discarding all its contents 
     ser.flushOutput() 
     ser.write("ATI") 
     print("write data: ATI") 
     time.sleep(1) #give the serial port sometime to receive the data 
     numOfLines = 0 
     while True: 
      response = ser.readline() 
      print("read data: " + response) 
      numOfLines = numOfLines + 1 
      if (numOfLines >= 5): 
       break 
       #pass 
      ser.close() 
    except Exception, e1: 
     print ("error communicating...: ") + str(e1) 
else: 
    print ("cannot open serial port ") 

sudo python2 serでスクリプトを実行しようとしましたが、まだ同じエラーがあります。どうすれば修正できますか?

+0

以下のコードを試しましたか? –

答えて

1

あなたのコードの最初の部分が間違っている、あなたはserの間違った属性をしています。次のように試してみてください。私の環境では

ser = serial.Serial(
port = "/dev/ttyUSB2", 
baudrate = 115200, 
bytesize = serial.EIGHTBITS, 
parity = serial.PARITY_NONE, 
stopbits = serial.STOPBITS_ONE, 
timeout = 1, 
xonxoff = False, 
rtscts = False, 
dsrdtr = False, 
writeTimeout = 2 
) 

を、ポートはその後、既に開いていたが、それがない場合は、それを開こうとすることができます

ser.open() 
ser.isOpen() 

そして、あなたは確認する必要がありこのため

ser.rtscts = False #disable hardware (RTS/CTS) flow control 
ser.dsrdtr = False #disable hardware (DSR/DTR) flow control 

これはそれがある場合、あなたはこれを変更する必要がありますあなたのPC上の仮想ポートでないこと

詳細はissueをご覧ください

関連する問題