2009-11-10 156 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
显然,其他命令不与这个陌生的工作,布兰克...

非常感谢!