2013-10-29 50 views
0

起初,我在Python 2.7.x,Windows 7(64)和FTDIFT232RL(所以不是真正的RS232串行端口)上使用PYthon 2.7.5,pySerial。 只是爲了測試我創建了這個代碼:pySerial setDTR工作不正常

class cProduction: 

    g_comPort_name = "COM1" 
    g_comPort = 0 

    # Instance of object ------------------------------------------------------- 
    def __init__(self, portName): 
     self.data = [] 
     self.g_comPort_name = portName 

    # Main functions ----------------------------------------------------------- 
    def start(self): 
     """ Open port, configure port, set pins of serial line to default state 
     DTR true, RTS false """ 
     try: 
      self.g_comPort = serial.Serial(
       port = self.g_comPort_name, 
       baudrate = 9600, 
       parity = serial.PARITY_NONE, 
       stopbits = serial.STOPBITS_ONE, 
       bytesize = serial.EIGHTBITS, 
       timeout = 10, 
       dsrdtr = False, 
       xonxoff = False, 
       rtscts = False) 

      if self.g_comPort.isOpen(): 
       return True 
      else: 
       return False 
     except: 
      return False 
     return False 

主營:

prod = cProduction("COM33") 
if prod.start(): 
    print Style.BRIGHT + Fore.YELLOW + "Open" + Style.RESET_ALL 
    while True: 
     key = raw_input('key: ') 
     if key == "R": 
      prod.g_comPort.setRTS(True) 
     if key == "r": 
      prod.g_comPort.setRTS(False) 
     if key == "D": 
      prod.g_comPort.setDTR(True) 
     if key == "d": 
      prod.g_comPort.setDTR(False) 

else: 
    print Style.BRIGHT + Fore.RED + "Error while starting production module" + Style.RESET_ALL 

RTS運作良好,但我有一個DTR問題。當我將DTR設置爲False時,我可以在振盪器上看到DTR真的被設置爲低電平,但在〜700ms之後它會回到高電平(沒有任何來自我身邊的中斷)。在這段時間setDTR(False)不再工作。我必須先調用setDTR(True),並在setDTR(False)再次工作後(但700ms後再次返回高電平)。 700毫秒的時間都是一樣的。 我試圖改變'dsrdtr'或'rtscts'的配置,但沒有幫助。

我有基於C++的Qt應用程序,它正在使用我的設備,現在我只是試圖將它重寫爲Python,所以我100%確定我的設備是正確的。

編輯︰我試着用我的筆記本電腦上真正的RS232 COM端口,它正在努力工作。所以似乎pySerial與虛擬COM端口與FTDI芯片有問題...

回答

0

它看起來更像是一個硬件或驅動程序的問題比蟒蛇問題。 有沒有連接到dtr的東西?這可能是一個硬件保護觸發,因爲要繪製大量的電流。

您可以嘗試在您的應用程序和Qt上使用loggerapimonitor以查看是否有任何區別。

+0

我再次檢查我的GUI應用程序的基礎上,我也發現了這個問題,但沒有約700ms的時間延遲,但約2秒。所以這很奇怪,現在它看起來像是一個真正的HW(設備)問題,並且它運行起來很幸運。但首先我要與HW部門覈對。 – Lodhart