Meena Adepu Ответов: 1

Как прочитать имя последовательного порта из текстового поля (редактируемого)в Python?


I Am trying to open serial port in Linux Ptyhon 2.7 pyqt4 with the below code and it works fine

 serialport.port = "/dev/ttyACM1"
 serialport.baudrate = 115200       
 serialport.open() 
I don't want to hard-code serial port name as above. I want to take serial port name as the input from user from editable text box.

textbox.setText("/dev/ttyACM1")
serialport.port = textbox.text()
serialport.baudrate = 115200       
serialport.open() 
I am unable to convert textbox.text() format to serialport.port. The following error occurs. ValueError: "port" must be None or a string, not

Please Help me, 
Thanks in Advance.

What I have tried:

<pre>textbox.setText("/dev/ttyACM1")
serialport.port = textbox.text()
serialport.baudrate = 115200       
serialport.open() 
I am unable to convert textbox.text() format to serialport.port. The following error occurs. ValueError: "port" must be None or a string, not

Please Help me, 
Thanks in Advance

Richard MacCutchan

В вашем сообщении об ошибке чего-то не хватает. Вы можете проверить, что именно возвращается из textbox.text() метод с отладчиком.

1 Ответов

Рейтинг:
2

Jochen Arndt

То pySerial port свойство-это строка Python, но PyQt QLineEdit text() возвращает функции QString объект. Таким образом, вы должны использовать метод преобразования или функцию.

Я не знаю точно, какое преобразование должно или может быть использовано здесь, потому что я плохо знаю Python. Но вы можете попробовать QString методы toAscii(), toUtf8(), и toLocal8Bit():

serialport.port = textbox.text().toAscii()


Richard MacCutchan

Строки в Python по умолчанию имеют значение UTF-8. Я сделал это в Google ранее, но не смог найти ссылку на метод text (); скорее всего, потому, что я не знал, что текстовое поле является объектом QLineEdit.

Jochen Arndt

Спасибо Вам за эту информацию.

Тогда все вышеперечисленные методы должны работать, потому что такая строка устройства содержит только символы ASCII.

Это может быть также другой виджет ввода, чем QLineEdit, но все текстовые виджеты PyQt используют тип QString, который использует UTF-16 внутренне.