crossplatform.ru

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

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> QtSerialport. Проблема с приемом данных.
Гость_Иван_*
сообщение 5.4.2013, 3:54
Сообщение #11





Гости








    


Цитата(kuzulis @ 2.4.2013, 10:11) *
Цитата
Я бы с таким удовольствием её почитал, да где взять?
http://qt-project.org/wiki/QtSerialPort_Russian здесь про документацию все зачеркнуто....

Скоро должна быть в открытом доступе на qt-project.org после того как ее допилят до того состояния чтобы не стыдно было :)

А пока что можно сгенерить самому, вот линк: http://www.prog.org.ru/index.php?topic=953...73488#msg173488


Цитата
Так по логике сначала необходимо настроить соединение, а потом открывать его, из-за этого вся и путаница.

Крайне неверное утверждение.
1. Ты не можешь что-то сконфигурировать не открыв это, т.е. не получив дескриптор у-ва. Это - раз.
2. Ты можешь переконфигурировать у-во в процессе его работы не закрывая его. Это - два.

Цитата
И ещё такой вопрос, сегодня столкнулся со следующей проблемой, первый раз пришлось работать с переходником usb com, как раз после того как обновился=)
После пересброса питания на плате, (но не всегда), такое ощущение, что не идет сигнал readyread(), и происходит это не всегда... Хотя при работе на компьютере с нормальным ком портом, такого замечено не было, поэтому не думаюь что косяк в программе.

Ну, я не телепат.
Дай полный HowTo как воспроизвести проблему и т.п.
Запости баг в багзиллу в конце концов с детальным описанием проблемы.

Вот тогда и есть смысл это обсуждать...


Цитата( @ 2.4.2013, 6:37) *
Цитата(ALeXUI @ 2.4.2013, 2:43) *
Так по логике сначала необходимо настроить соединение, а потом открывать его, из-за этого вся и путаница.
И из-за текущей последовательности все наступали и будут наступать на грабли.


Ну, это единственно верная последовательность. :)

Цитата(kuzulis @ 2.4.2013, 10:11) *
Крайне неверное утверждение.
1. Ты не можешь что-то сконфигурировать не открыв это, т.е. не получив дескриптор у-ва. Это - раз.
2. Ты можешь переконфигурировать у-во в процессе его работы не закрывая его. Это - два.

Вот как раз по второй причине хочется сделать сначала задать конфигурацию, а потом открывать устройство. И потом в QextSerialPort нужно сначала создать объект порта (получить дескриптор устройства), затем сконфигурировать его и только потом открывать. Так что по крайней мере я не вижу в действиях ALeXUI ничего конфликтующего с нормальной логикой или опытом использования QextSerialPort.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.4.2013, 6:19
Сообщение #12


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


сам порт (который в системе), конечно же, требует, чтобы сначала открыли его, потом настроили. Но оболочка вполне может позволить сначала задать настройки, а потом , когда порт открывают, эти настройки туда лепить.

так что, недоработочка в интерфейсе оболочки ИМХО :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 5.4.2013, 10:45
Сообщение #13


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

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

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




Репутация:   7  


Парни, ну не серьезно все это. Я перестану вообще отвечать и реагировать на такого рода вопросы и хотелки.

Цитата
Вот как раз по второй причине хочется сделать сначала задать конфигурацию, а потом открывать устройство.

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

Цитата
И потом в QextSerialPort нужно сначала создать объект порта (получить дескриптор устройства), затем сконфигурировать его и только потом открывать.

Неверно. Каша в голове.

Цитата
Так что по крайней мере я не вижу в действиях ALeXUI ничего конфликтующего с нормальной логикой или опытом использования QextSerialPort.

Неверно. Я не разбираюсь в сортах г-на и логика/опыт с QextSerialPort меня не волнует.


Цитата
сам порт (который в системе), конечно же, требует, чтобы сначала открыли его, потом настроили. Но оболочка вполне может позволить сначала задать настройки, а потом , когда порт открывают, эти настройки туда лепить.


Оболочка - это то что может пользователь сделать под себя как ему хочется, просто обернув класс своей логикой.
Задача класса - обеспечить оптимальный, простой, универсальный, понятный и гибкий интерфейс для работы с у-вом.

Цитата
так что, недоработочка в интерфейсе оболочки ИМХО

Так что, недоработочка в интерфейсе мозга ИМХО




А также нежелание читать документацию, смотреть примеры, поискать решение в гугле и т.п.
Проще ляпнуть перл в форум - авось кто-нибудь решит вашу проблему за Вас.

UPD:
Также см. QFile, QAbstractSocket, QProcess и прочие классы от QIODevice. Они не согласны с вашей логикой.
Я нехочу спорить об этом.

Если есть желание что-то изменить - представьте свое решение в Gerrit. Если его одобрят (но я не одобрю :) )
то оно появится в QtSerialPort.




Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 6.4.2013, 16:22
Сообщение #14


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


какие по весне все нервные :D
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ud4fd
  опции профиля:
сообщение 27.4.2013, 0:00
Сообщение #15


Новичок


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

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




Репутация:   0  


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

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


Новичок


Группа: Новичок
Сообщений: 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
Сообщение #17


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

Группа: Участник
Сообщений: 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
Сообщение #18


Новичок


Группа: Новичок
Сообщений: 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;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 28.4.2013, 21:07
Сообщение #19


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

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

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




Репутация:   7  


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


А ты не можешь отличить Qt-шные сигналы от сигнальных линий порта (pinout signals)?

Нонсенс, я и не знал, что можно делать QObject::connect к перечисляемому типу, вот это новость так новость! :huh:

Ужос!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ud4fd
  опции профиля:
сообщение 28.4.2013, 22:15
Сообщение #20


Новичок


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

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




Репутация:   0  


Цитата(kuzulis @ 28.4.2013, 22:07) *
А ты не можешь отличить Qt-шные сигналы от сигнальных линий порта (pinout signals)?

вот здесь
Цитата(ud4fd @ 27.4.2013, 1:00) *
Здравствуйте kuzulis,

Подскажите ка в библиотеке QtSerialPort использовать сигнал PinoutSignals для контроля за состоянием линий CTS, RI, DCD ... желательно с реальным примером.


Я и спрашивол есть ли возможность обрабатывать сигналя от PinoutSignals или нет. Так как в документации ни чего толком не нашел.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 25.11.2024, 1:06