2016-03-30 43 views
1

.Değişken seri portuna atama değişkeni

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

port=VARIABLE ile deniyorum, ancak bu çalışmaz. Sadece yolu kabul ediyor gibi görünüyor ama programımda çok fazla cihaz var.

cevap

1

Anladığım kadarıyla, com bağlantı noktalarında birkaç aygıtınız var ve bunlardan birini seçmek ve bu bağlantı noktasını VARIABLE'a atamak istiyorsunuz.

Aşağıda, COM bağlantı noktasını okuyan ve ilk bağlantı noktasını kullanılabilir COM bağlantı noktası olarak atayan bir kod yer almaktadır. Daha sonra, açık olup olmadığını görmek için COM bağlantı noktasını araştırır.

Kullanmak ve buna göre VARIABLE için ilgili bağlantı noktasını slice atamak istediğiniz COM PORT belirlemek için serial_ports() çıkışını kontrol edilebilmektedir. port 0 kullanıyorum. Bu benim COM1

Fonksiyonu serial_ports() çapraz platformdur. Pencerelerim var ve sorunsuz çalışıyor. here

Demo Kod

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() 

Çıktı

den

İlham

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

teşekkür çalışın! – karmax