razrab228
@razrab228
зачем тебе знать это?

Почему программа не показывает данные из 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" (данные не изменяются), но в программе пишет только "['']". Хотя пишет, что порт подключен (проверял функцией). С чем это может быть связано?
  • Вопрос задан
  • 682 просмотра
Решения вопроса 1
razrab228
@razrab228 Автор вопроса
зачем тебе знать это?
Прблема решилась либо добавление интерфейса (то-есть 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
Я столкнулась с такой же проблемой, никак не могу понять как ее решить, рада буду услышать любые советы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы