crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QtSerialport. Проблема с приемом данных.
Voronar
  опции профиля:
сообщение 31.3.2013, 16:12
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 13.2.2013
Пользователь №: 3709

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте. Взял в помощь эту библиотеку, чтобы общаться с Arduino.
Моя проблема заключается в следующем:

Написал прогу по приему данных с Arduino, но прием и отображение данных происходит не сразу. Сначала приходится через Arduino IDE помониторить порт(послать какой-то сигнал готовности), а после этого уже приходят желанные данные по сигналу readyRead() в соответствующий слот моей программы. Я так понимаю, что в моей программе не хватает какого-то метода, который говорит порту: "Я готов принимать от тебя данные, давай!". Не подскажите как называется этот метод?

Спасибо за внимание.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ud4fd
  опции профиля:
сообщение 27.4.2013, 0:00
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 26.4.2013
Пользователь №: 3808

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте kuzulis,

Подскажите ка в библиотеке QtSerialPort использовать сигнал PinoutSignals для контроля за состоянием линий CTS, RI, DCD ... желательно с реальным примером.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ud4fd
  опции профиля:
сообщение 27.4.2013, 12:00
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 26.4.2013
Пользователь №: 3808

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте kuzulis,

при попытке использовать сигналы от состояния линий порта
 connect(serial, SIGNAL(DataSetReadySignal()), this, SLOT(myDSR()) );

в дебаг получаю следующее
Цитата
Object::connect: No such signal QSerialPort::DataSetReadySignal()
Object::connect: (receiver name: 'MainWindow')


Тестировал под Linux в QT4.8 и QT5

Как правильно работать с сигналами от линий порта?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 28.4.2013, 13:35
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

Спасибо сказали: 36 раз(а)




Репутация:   7  


А гдеты нашел эти сигналы? Таких сигналов нету, есть только эти:

Цитата
Q_SIGNALS:
void baudRateChanged(qint32 baudRate, QSerialPort::Directions dir);
void dataBitsChanged(QSerialPort::DataBits dataBits);
void parityChanged(QSerialPort::Parity parity);
void stopBitsChanged(QSerialPort::StopBits stopBits);
void flowControlChanged(QSerialPort::FlowControl flow);
void dataErrorPolicyChanged(QSerialPort::DataErrorPolicy policy);
void dataTerminalReadyChanged(bool set);
void requestToSendChanged(bool set);
void error(QSerialPort::SerialPortError serialPortError);
void settingsRestoredOnCloseChanged(bool restore);


Во вторых, отслеживание изменения сигналов DSR, CTS, RNG и пр. не поддерживается
потому что невозможно это кросс-платформено реализовать для всех платформ
(например в MAC OSX) без использования поллинга.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ud4fd
  опции профиля:
сообщение 28.4.2013, 19:55
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 26.4.2013
Пользователь №: 3808

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(kuzulis @ 28.4.2013, 14:35) *
А гдеты нашел эти сигналы? Таких сигналов нету, есть только эти:


А это нафига есть в файле qserialport_unix.cpp

QSerialPort::PinoutSignals QSerialPortPrivate::pinoutSignals() const
{
    int arg = 0;
    QSerialPort::PinoutSignals ret = QSerialPort::NoSignal;

    if (::ioctl(descriptor, TIOCMGET, &arg) == -1) {
        q_ptr->setError(decodeSystemError());
        return ret;
    }

#ifdef TIOCM_LE
    if (arg & TIOCM_LE)
        ret |= QSerialPort::DataSetReadySignal;
#endif
#ifdef TIOCM_DTR
    if (arg & TIOCM_DTR)
        ret |= QSerialPort::DataTerminalReadySignal;
#endif
#ifdef TIOCM_RTS
    if (arg & TIOCM_RTS)
        ret |= QSerialPort::RequestToSendSignal;
#endif
#ifdef TIOCM_ST
    if (arg & TIOCM_ST)
        ret |= QSerialPort::SecondaryTransmittedDataSignal;
#endif
#ifdef TIOCM_SR
    if (arg & TIOCM_SR)
        ret |= QSerialPort::SecondaryReceivedDataSignal;
#endif
#ifdef TIOCM_CTS
    if (arg & TIOCM_CTS)
        ret |= QSerialPort::ClearToSendSignal;
#endif
#ifdef TIOCM_CAR
    if (arg & TIOCM_CAR)
        ret |= QSerialPort::DataCarrierDetectSignal;
#elif defined TIOCM_CD
    if (arg & TIOCM_CD)
        ret |= QSerialPort::DataCarrierDetectSignal;
#endif
#ifdef TIOCM_RNG
    if (arg & TIOCM_RNG)
        ret |= QSerialPort::RingIndicatorSignal;
#elif defined TIOCM_RI
    if (arg & TIOCM_RI)
        ret |= QSerialPort::RingIndicatorSignal;
#endif
#ifdef TIOCM_DSR
    if (arg & TIOCM_DSR)
        ret |= QSerialPort::DataSetReadySignal;
#endif

    return ret;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Voronar   QtSerialport. Проблема с приемом данных.   31.3.2013, 16:12
- - kuzulis   См. ответ на prog.org.ru   1.4.2013, 8:42
- - ALeXUI   kuzulis, Здравствуйте, я давно задавал вопрос, на ...   1.4.2013, 11:03
- - ALeXUI   Спасибо уже помогли! Если у кого-то возникнут ...   1.4.2013, 13:29
- - kuzulis   Это само собой разумеется! В следующий раз п...   1.4.2013, 15:14
- - Voronar   Спасибо ALeXUI. kuzulis, если бы он не был включе...   1.4.2013, 18:50
- - ALeXUI   kuzulis, ЦитатаВ следующий раз просто надо читать...   2.4.2013, 0:43
|- - kuzulis   Цитата(ALeXUI)Я бы с таким удовольствием её почита...   2.4.2013, 10:11
- - Litkevich Yuriy   Цитата(ALeXUI @ 2.4.2013, 2:43) Так по ло...   2.4.2013, 5:37
- - Litkevich Yuriy   Цитата(kuzulis @ 2.4.2013, 12:11) единств...   4.4.2013, 22:35
- - Иван   Цитата(kuzulis @ 2.4.2013, 10:11) ЦитатаЯ...   5.4.2013, 3:54
- - Алексей1153   сам порт (который в системе), конечно же, требует,...   5.4.2013, 6:19
- - kuzulis   Парни, ну не серьезно все это. Я перестану вообще ...   5.4.2013, 10:45
- - Алексей1153   какие по весне все нервные   6.4.2013, 16:22
- - ud4fd   Здравствуйте kuzulis, Подскажите ка в библиотеке...   27.4.2013, 0:00
|- - ud4fd   Здравствуйте kuzulis, при попытке использовать с...   27.4.2013, 12:00
|- - kuzulis   А гдеты нашел эти сигналы? Таких сигналов нету, ес...   28.4.2013, 13:35
|- - ud4fd   Цитата(kuzulis @ 28.4.2013, 14:35) А гдет...   28.4.2013, 19:55
- - kuzulis   ЦитатаА это нафига есть в файле qserialport_unix.c...   28.4.2013, 21:07
- - ud4fd   Цитата(kuzulis @ 28.4.2013, 22:07) А ты н...   28.4.2013, 22:15
- - kuzulis   А я тебе ответил, что можешь только поллингом их ...   28.4.2013, 23:12
- - marsel   Здравствуйте kuzulis. Подскажите пожалуйста возмо...   20.8.2013, 23:02


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 10:01