2016-03-30 6 views
1

変数をシリアルポートに割り当てる必要があります。変数をpyserialポートに割り当てます

ser = serial.Serial(
port=VARIABLE 
baudrate=115200, 
parity=serial.PARITY_NONE, 
stopbits=serial.STOPBITS_ONE, 
bytesize=serial.EIGHTBITS 
) 

私はport=VARIABLEで試してみますが、うまくいきません。 パスだけを受け入れるようですが、私のプログラムでは多くのデバイスがあります。

答えて

1

私が理解しているように、comポートにはいくつかのデバイスがあり、そのうちの1つを選択してそのポートをVARIABLEに割り当てたいとします。

以下は、COMポートを読み取り、最初のポートを使用可能なCOMポートとして割り当てるコードです。次に、COMポートを調べて、そのポートが開いているかどうかを確認します。

あなたがVARIABLEに応じて、それぞれのポートsliceを使用して割り当てたいCOM PORT決定するためにserial_ports()出力を検査することができます。私はport 0私のCOM1

を使用しました。機能serial_ports()はクロスプラットフォームです。私は窓を持っており、シームレスに動作します。 here

デモコードから

インスピレーション

import sys 
import glob 
import serial 


def serial_ports(): 

    if sys.platform.startswith('win'): 
     ports = ['COM%s' % (i + 1) for i in range(256)] 
    elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'): 
     # this excludes your current terminal "/dev/tty" 
     ports = glob.glob('/dev/tty[A-Za-z]*') 
    elif sys.platform.startswith('darwin'): 
     ports = glob.glob('/dev/tty.*') 
    else: 
     raise EnvironmentError('Unsupported platform') 

    result = [] 
    for port in ports: 
     try: 
      s = serial.Serial(port) 
      s.close() 
      result.append(port) 
     except (OSError, serial.SerialException): 
      pass 
    return result 


if __name__ == '__main__': 

    VARIABLE = serial_ports()[0] #Assign first port as COM port  
    ser = serial.Serial(
    port=VARIABLE, 
    baudrate=115200, 
    parity=serial.PARITY_NONE, 
    stopbits=serial.STOPBITS_ONE, 
    bytesize=serial.EIGHTBITS 
    ) 

    print "Is port", VARIABLE , " open ?", ser.isOpen() 

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> ================================ RESTART ================================ 
>>> 
Is port COM1 open ? True 
>>> 
+0

おかげで、それを仕事出力! – karmax

関連する問題