我無法讓我的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個小時後,我出於想法。
嗨,我想連接我的新港conex AGAP控制器與python。你的回答很有幫助。新港網站中的python示例不完整。如果你有更多的指示/信息,請給我鏈接。我會嘗試你的代碼 – hsinghal
@hsinghal我不遵循你的問題。您是否無法連接到設備?或者使用python進行編程,使其達到您想要的效果? –
我相信上面顯示的例子是爲python 2.x我現在正在運行python 3.5。這是否有所作爲?我試過你的代碼,但它不適用於我的設備。它是紐波特的壓電控制器。我可以打開端口檢查狀態關閉,但沒有成功讀取寫入。看來控制器使用RS 485.我可以使用使用newport軟件的鏡像安裝。 python沒有成功。請幫忙。 – hsinghal