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
程序还可以,我对字符串的类型只有一些问题。事实上我必须插入一个回车但我不能这样做。
我说程序没问题,因为当我第一次连接时仪器从关闭转到开启,在视频上我读到“Porta / 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.
非常感谢你 斯特凡诺
答案 0 :(得分:1)
要添加回车只是将\r
附加到字符串,或者可能需要回车符/换行符\r\n
,某些系统会使用它来标记行尾。当然,它可能只需要换行。在这种情况下,您只需使用\n
。
buffer = "M 3\r"
或
buffer = "M 3\r\n"
或
buffer = "M 3\n"
您可能会找到有关解决Windows问题的pySerial帮助文档。
答案 1 :(得分:1)
不幸的是它不起作用。
在过去,我已经尝试使用命令echo在Linux中通过bash使用\ r \ n ......但是没有
现在我正在尝试使用python,但没有再尝试。当我以这种方式给出弦乐时,乐器可能会很有趣:
buffer = "M 3\r"
或
buffer = "M 3\r\n"
给了我这个答案:
@
这就是全部......
我不知道。
另一件事:当我尝试使用bash语言时,仪器会使用以下命令开始测量:
echo "M 3 " > /dev/ttyS0
这是在3.之后的空白
显然,另一个命令不适用于这个奇怪的blanck ......
非常感谢!