2016-03-06 54 views
1

我無法讓我的Windows 7筆記本電腦與Newport CONEX-PP motion controller對話。我試過python(Spyder/Anaconda)和一個稱爲Termite的串口流程程序,結果都是一樣的:設備沒有響應。最終目標是使用python與控制器進行通信。通過USB /串口連接到Python中的Newport CONEX-PP運動控制器

控制器通過他們向我銷售的USB電纜連接到我的計算機,明確用於此設備。設備接收數據(紅色)或發送數據(綠色)時,連接器有一對閃爍燈。還有一個打包的圖形用戶界面程序,該設備似乎工作正常。我沒有嘗試過每個按鈕,我嘗試過的按鈕都有預期的結果。

訪問此設備的文檔旁邊是不存在的。盒子中的CD有一種連接方式,上面鏈接的網頁有不同的方式。第一種方式(CD從箱子)創建模塊的層次結構,它不承認(這是由新港提供的代碼段)模塊中結束:

import sys 
sys.path.append(r'C:\Newport\MotionControl\CONEX-PP\Bin') 
import clr 
clr.AddReference("Newport.CONEXPP.CommandInterface") 
from CommandInterfaceConexPP import * 
import System 
instrument="COM5" 
print 'Instrument Key=>', instrument 
myPP = ConexPP() 
ret = myPP.OpenInstrument(instrument) 
print 'OpenInstrument => ', ret 
result, response, errString = myPP.SR_Get(1) 

最後一行返回:

Traceback (most recent call last):

File "< ipython-input-2-5d824f156d8f >", line 2, in result, response, errString = myPP.SR_Get(1)

TypeError: No method matches given arguments

我猜這是因爲各種模塊引用是以某種方式扭曲。但我不知道,我對python比較陌生,也是唯一一次用於串行通信的供應商提供的示例文件。

與控制器進行通信的第二個方法是通過簽證模塊(該模塊CONEX_SMC_common進口簽證模塊):

import sys 
sys.path.append(r'C:\Newport\NewportPython') 
class CONEX(CONEXSMC): def __init__(self): 
    super(CONEX,self).__init__() device_key = 'com5' 
    self.connect=self.rm.open_resource(device_key, baud_rate=57600, timeout=2000, data_bits=8, write_termination='\r\n',read_termination='\r\n') 
mine.connect.read() 

這最後mine.connect.read()命令返回:

VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.

相反,如果予寫入端口mine.connect.write('VE')的光上的連接器閃爍紅色,就好像它接收一些數據,並返回:

(4L, < StatusCode.success: 0 >)

如果我問的「地雷」對象mine.__dict__的字典,我得到:

{'connect': <'SerialInstrument'(u'ASRL5::INSTR')>, 'device_key': u'ASRL5::INSTR', 'list_of_devices': (u'ASRL5::INSTR',), 'rm':)>}

的ASRL5 ::對於VISA INSTR資源是至少與控制器,因爲當我拔下設備它消失的筆記本電腦和GUI程序將停止工作。

也許有一些簡單的我很想念這裏。我安裝了NI VISA,我不只是運行來自網站的DLL。哦,我發現了一個Github問題/ answer with this exact problem但最終的結果沒有任何意義,在hgrecco告訴他使用「open_resource」後線程關閉,這正是我正在使用的。

結果與白蟻是一樣的,我可以明顯地連接到控制器,並讓燈閃紅燈,但它從來沒有響應,無論是通過白蟻或執行要求的行動。

我試過pySerial太:

import serial 
ser = serial.Serial('com5') 
ser.write('VE\r\n') 
ser.read() 

Python的只是等待永遠存在,我想是因爲我沒有設定一個超時限制。因此,如果任何人有任何關於這個特定的運動控制器,紐波特設備或與串口通信的一般經驗,並可以揭示這個問題,我非常感謝它。大約7個小時後,我出於想法。

回答

2

在回過頭來看這個新鮮的眼睛後發現this GitHub discussion我決定給pySerial另一個鏡頭,因爲我的問題中的其他方法都還沒有工作。下面的代碼工作:

import serial 
ser = serial.Serial('com5',baudrate=115200,timeout=1.0,parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS) 
ser.write('1TS?\r\n') 
ser.read(10) 

,並返回

'1TS000033\r'

的字符串是9個字符長,所以我任意選擇10個字符的讀取結束了拿起終止的人物之一。

問題是設備附帶的python文件或網站上提供的python文件至多是不完整的,不應該被任何東西所信任。 GUI手冊具有所需的波特率。我使用白蟻找出停止位設置 - 或至少有一個工程。

+0

嗨,我想連接我的新港conex AGAP控制器與python。你的回答很有幫助。新港網站中的python示例不完整。如果你有更多的指示/信息,請給我鏈接。我會嘗試你的代碼 – hsinghal

+0

@hsinghal我不遵循你的問題。您是否無法連接到設備?或者使用python進行編程,使其達到您想要的效果? –

+0

我相信上面顯示的例子是爲python 2.x我現在正在運行python 3.5。這是否有所作爲?我試過你的代碼,但它不適用於我的設備。它是紐波特的壓電控制器。我可以打開端口檢查狀態關閉,但沒有成功讀取寫入。看來控制器使用RS 485.我可以使用使用newport軟件的鏡像安裝。 python沒有成功。請幫忙。 – hsinghal

相關問題