2009-11-10 2 views
0

Buongiorno, Я пытаюсь отправить простую строку в последовательный порт, чтобы командовать инструментом для измерения шума.
Строки очень легко:
"М 1" = прибор на
"M 2" = инструмент выключен
"M 3" = начать меру
"М 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.

Можете ли вы помочь мне:
1. Управление для запуска программы под окнами
2. Управлять тем, чтобы точно указать строку с возвратом каретки ???

Thak you very much.
Стефано

ответ

1

Чтобы добавить возврат каретки просто добавить \r в строку, или, возможно, может потребоваться возврат каретки/перевода строки \r\n, что некоторые системы используют для обозначения конца строки. Конечно, это может потребоваться только для перевода строки. В этом случае вы просто используете \n.

buffer = "M 3\r" 

или

buffer = "M 3\r\n" 

или

buffer = "M 3\n" 

Вы можете найти pySerial документации помощь в решении ваших проблем Windows.

1

К сожалению, это не сработало.
В прошлом я уже пытался использовать \ r \ n с помощью команды echo в linux через bash ... но ничего.
Теперь я пытаюсь использовать python, но ничего больше.Это может быть интересно, что инструмент, когда я даю строку таким образом:

buffer = "M 3\r"
или
buffer = "M 3\r\n"

дает мне этот ответ: @

Вот и все ...
Я не знаю.
Другое дело: когда я попытался с языком Баш прибор начинает измерение с помощью команды:
echo "M 3 " > /dev/ttyS0
что с Blanck после 3.
Очевидно другой команды не работают с этим странным Blanck ...

спасибо!

Смежные вопросы