Size: a a a

2021 March 22

МВ

Макс Воробьев... in Qt
Roman Yastrebckov
уф, звучит ещё сложнее, чем со слипом
readyRead не будет тебе блокировать поток.
источник

RY

Roman Yastrebckov in Qt
миша
слип тут вообще лишний
так без него и лампа не горит
и врут календари
а так понимаю, что надо как-то иначе
попробую через readyRead
источник

м

миша in Qt
кинь побольше кода
где ты пишешь в порт и читаешь из порта
источник

RY

Roman Yastrebckov in Qt
void ArduinoSerial::readData()
{
   QByteArray data;
   if (serial.isOpen() && serial.bytesAvailable() > 3) {
       data = serial.readAll();
       emit recievedBA(data);
       myString = QString(data);
       emit RecivedData(myString);
       c++;
       serial.flush();
       emit elapsedTime(QString::number(c));
   }
}

void ArduinoSerial::WriteToPort(QByteArray data)
{
   if (serial.isOpen() && serial.isWritable()) {
       serial.write(data);
       serial.waitForBytesWritten();
       _sleep(50);
   }
}
источник

ee

elias eliatto in Qt
Привет. Qt вебсокет клиент не посылает сигнал дисконнекта при отключении сетевого адаптера. Это баг или фича?
источник

AS

Anatoly Shirokov in Qt
Roman Yastrebckov
void ArduinoSerial::readData()
{
   QByteArray data;
   if (serial.isOpen() && serial.bytesAvailable() > 3) {
       data = serial.readAll();
       emit recievedBA(data);
       myString = QString(data);
       emit RecivedData(myString);
       c++;
       serial.flush();
       emit elapsedTime(QString::number(c));
   }
}

void ArduinoSerial::WriteToPort(QByteArray data)
{
   if (serial.isOpen() && serial.isWritable()) {
       serial.write(data);
       serial.waitForBytesWritten();
       _sleep(50);
   }
}
а тебе данные возвращаются на какой-то запрос, или просто идет поток?
источник

AS

Anatoly Shirokov in Qt
elias eliatto
Привет. Qt вебсокет клиент не посылает сигнал дисконнекта при отключении сетевого адаптера. Это баг или фича?
пока что-нибудь не пошлешь, не получишь
источник

RY

Roman Yastrebckov in Qt
постоянно опрашиваю с интервалом в 1 секунду
источник

AS

Anatoly Shirokov in Qt
ну, то есть в компорт что-то кидает устройство, а ты это что-то ловишь?
источник

AS

Anatoly Shirokov in Qt
без предварительного запроса на само устройство
источник

RY

Roman Yastrebckov in Qt
да
послал запрос
получил ответ
если на 3 байте одно из интересующих значений, то посылаю сигналы на увелечение счетчика
только мне иногда надо посылать сигнал на светофор
и они не всегда проходят почему-то
если без слипа
источник

SI

Someone Inthebox in Qt
Roman Yastrebckov
да
послал запрос
получил ответ
если на 3 байте одно из интересующих значений, то посылаю сигналы на увелечение счетчика
только мне иногда надо посылать сигнал на светофор
и они не всегда проходят почему-то
если без слипа
Возможно в доке на устройство есть условие на какую-то задержку после или перед отправкой? Отсюда слип и решает проблему. Используйте отдельный поток, чтобы слип не мешал.
источник

RY

Roman Yastrebckov in Qt
Someone Inthebox
Возможно в доке на устройство есть условие на какую-то задержку после или перед отправкой? Отсюда слип и решает проблему. Используйте отдельный поток, чтобы слип не мешал.
он в отдельном потоке
источник

SI

Someone Inthebox in Qt
Roman Yastrebckov
он в отдельном потоке
у меня с одним устройством это работает примерно таким образом, как у вас через слип. И без слипа я пока не нашёл нормального решения, иначе забивается буфер устройства и наступает печаль. У меня всегда запрос-ответ каждые ~50мс. Вы точно не посылаете в устройство сразу после команды светофору что-то еще?
источник

RY

Roman Yastrebckov in Qt
Someone Inthebox
у меня с одним устройством это работает примерно таким образом, как у вас через слип. И без слипа я пока не нашёл нормального решения, иначе забивается буфер устройства и наступает печаль. У меня всегда запрос-ответ каждые ~50мс. Вы точно не посылаете в устройство сразу после команды светофору что-то еще?
так посылаю
получается может быть та:
опрос-опрос-опрос-сигнал-опрос-опрос-сигнал-опрос-опрос
в этом то и фишка
источник

SI

Someone Inthebox in Qt
Roman Yastrebckov
так посылаю
получается может быть та:
опрос-опрос-опрос-сигнал-опрос-опрос-сигнал-опрос-опрос
в этом то и фишка
Вы посылаете 1 раз в секунду, да? И периодически кидаете еще один сигнал на светофор тому же устройству, так? И без слипа порой сигнал не проходит. То есть он то проходит, то нет. Я и предположил, что моменты, когда сигнал не проходит совпадают с отсылкой обычной посылки этому устройству. В итоге отсылаются сразу 2 посылки и устройство не успевает среагировать. По сему пауза важна. Но это теория, так-то я хз что происходит :)
источник

RY

Roman Yastrebckov in Qt
Мне казалось там что-то типо очереди должно быть, но фиг знает
источник

RY

Roman Yastrebckov in Qt
А так да
Вы все верно поняли
источник

SI

Someone Inthebox in Qt
Если устройство отвечает на посылку на светофор - просто ждите ответ и не шлите на него ничего, пока тот не придёт. Тогда и спать не придётся, думаю.
источник

RY

Roman Yastrebckov in Qt
Каким образом ответ ждать?
источник