2009-11-10 153 views
0

Buongiorno公司, 我想要一個簡單的字符串發送到串行端口命令噪聲測量儀器。
字符串是很容易:
「M 1」
「M 2」=儀器=關閉儀器
「M 3」=開始測量
「M 4」=停止措施
發送字符串串行

我發現這個程序:

import serial 

ser = serial.Serial(0) #Seleziona la porta seriale COM4 
ser.baudrate = 9600 #Imposta il baudrate a 9600bps 

ser.open() #apre la porta com 
ser.close() 
#verifica se la porta e' aperta 
if ser.isOpen(): 
    com_num = ser.portstr 
    print ("Porta " + com_num + " aperta") 
    #invia il comando alla seriale 
    buffer = "M 3" 
    ser.write(buffer)  
    #Loop d'attesa caratteri 
    num = 0 
    while num == 0: 
     num = ser.inWaiting() 
    #scarica il buffer della seriale 
    buffer = ser.read(num) 
    print ("Dati ricevuti dalla seriale:") 
    print buffer 
    ser.close()    #chiude la porta 
else: 
    print ("Porta seriale gia' in uso o inesistente") 
s = raw_input("digita INVIA per uscire") 

使用Linux
程序是確定的,我只是有一些問題字符串類型。事實上,我不得不插入回車,但我不能這樣做。
我說,該方案是可行的,因爲從關閉樂器接通時,我做了我的第一個連接,並在視頻中,我讀「門的/ dev/TTYS = APERTA」泰德的意思是「打開」。但是這適用於我發送的任何類型的字符串。事實上,這就像港口的「無形化」,而不是真正的交流。
後來我不管理,以正確的方式發送的字符串,其可以用於回車的問題。

使用Windows
我無法打開端口,我已經拒絕訪問該端口的錯誤,這是錯誤:
Traceback (most recent call last):
File "C:/d.py", line 9, in
ser.open() #apre la porta com
File "C:\Programmi\Python26\lib\site-packages\serial\serialwin32.py", line 53, in open raise SerialException("could not open port %s: %s" % (self.portstr, ctypes.WinError())) serial.serialutil.SerialException: could not open port COM1: [Error 5] Accesso negato.

你能幫我:
1.管理在Windows上運行的程序
2.管理的方式正好與回車字符串給???

Thak你了。
斯特凡諾

回答

1

要添加回車只是追加\r到您的字符串,或者,它可能需要一個回車/換行\r\n,其中一些系統使用標記行的末尾。當然,它可能只需要一個換行符。在這種情況下,您只需使用\n

buffer = "M 3\r" 

buffer = "M 3\r\n" 

buffer = "M 3\n" 

您可能會發現在解決您的Windows問題的幫助pySerial文檔。

1

遺憾的是它不工作。
在過去,我已經嘗試使用\ r \ n與命令回聲在linux中通過bash ...但沒有。
現在我試圖用python,但沒有再次。這可能是有趣的是,儀器,當我在字符串中這樣說:

buffer = "M 3\r"

buffer = "M 3\r\n"

給予我這樣的回答: @

這一切......
我不知道。
另一件事:當我用的是bash語言試圖儀器開始命令措施:
echo "M 3 " > /dev/ttyS0
即與布蘭克後3
顯然,其他命令不與這個陌生的工作,布蘭克...

非常感謝!