@razrab228
html, люблю больше php.

Почему программа не показывает данные из serial порта?

Код python:
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
from PyQt5.QtCore import QIODevice
import time

serial = QSerialPort()
serial.setBaudRate(9600)
ports = QSerialPortInfo().availablePorts()
for port in ports:
    print(port.portName())

portName = input("Введите название порта: ")

def portOpen():
    serial.setPortName(portName)
    serial.open(QIODevice.ReadWrite)

portOpen()

def portRead():
    rx = serial.readLine()
    rxs = str(rx, 'utf-8').strip()
    data = rxs.split(',')
    print(data)

while(1):
    portRead()
    time.sleep(1)


и также arduino:
void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print("text\r\n");
  delay(1);
}


ардуино отправляет "text\r\n" (данные не изменяются), но в программе пишет только "['']". Хотя пишет, что порт подключен (проверял функцией). С чем это может быть связано?
  • Вопрос задан
  • 438 просмотров
Решения вопроса 1
@razrab228 Автор вопроса
html, люблю больше php.
Прблема решилась либо добавление интерфейса (то-есть qt5), либо добавление строки:
serial.readyRead.connect(onRead)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@vanyamba-electronics
Проверьте, отправляет ли Arduino символ перевода строки "\r\n" в конце, раз уж вы используете readLine().
Ответ написан
@dima20155
you don't choose c++. It chooses you
могу посоветовать:
печатать не так:
rx = serial.readLine()
rxs = str(rx, 'utf-8').strip()
data = rxs.split(',')
print(data)


А сразу так:
rx = serial.readLine()
print(rx)

Если не поможет обратить вниманеие на пример pyqt QSerialPort
Ответ написан
Комментировать
@DinosaurY
Я столкнулась с такой же проблемой, никак не могу понять как ее решить, рада буду услышать любые советы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы