Russian Qt Forum
Май 04, 2024, 15:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 59 60 [61] 62 63 ... 88   Вниз
  Печать  
Автор Тема: Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА].  (Прочитано 752823 раз)
b-s-a
Гость
« Ответ #900 : Март 26, 2012, 10:50 »

Подозреваю, что в *unix запись не всегда происходит моментально. А только до тех пор, пока есть место в буфере.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #901 : Март 26, 2012, 11:29 »

Цитировать
Подозреваю, что в *unix запись не всегда происходит моментально. А только до тех пор, пока есть место в буфере.

Т.е., передав в функцию сразу много данных:
Код
C++ (Qt)
::write(fd, data, 4096); //где 4096 - это много данных
 
возможно, что она сразу не передаст управлеие?

Или она выделит где-то в драйвере порта место под 4096 байта, скопирует их туда, вернет сразу 4096,
а с теми данными, которые появились в буфере драйвера - драйвер уже по тихонечку будет их отсылать в UART
в контексте ядреного потока (или чего там)?

И если, к примеру, драйвер успел отправить только 96 байт (осталось в буфере драйвера 4000),
и потом мы опять вызовем write(4096) - то буфер драйвера пополнеет до 4000+4096 байт,
а функция write() снова вернет 4096 мгновенно?

Т.е. как вообще оно будет? Будет ли write() ожидать отправку?

От этого многое зависит в реализации алгоритма для QtSerialPort
« Последнее редактирование: Март 26, 2012, 11:33 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
b-s-a
Гость
« Ответ #902 : Март 26, 2012, 13:54 »

блокирующий вариант write будет ждать. неблокирующий не будет (запишет только то, на что есть место в буфере). Таким образом, при использовании неблокирующего режима можно писать частями. Информацию о том, что данные записаны можно получить через тот же notifier (использующий select)
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #903 : Март 26, 2012, 14:07 »

Цитировать
неблокирующий не будет (запишет только то, на что есть место в буфере).
Вот это поясни: про какой буфер речь и что за место? Я ничего не понял.

Цитировать
Информацию о том, что данные записаны можно получить через тот же notifier (использующий select)
Оно так и работает сейчас.
Записан

ArchLinux x86_64 / Win10 64 bit
b-s-a
Гость
« Ответ #904 : Март 26, 2012, 17:32 »

Цитировать
неблокирующий не будет (запишет только то, на что есть место в буфере).
Вот это поясни: про какой буфер речь и что за место? Я ничего не понял.
речь идет про ядерно-аппаратный буфер (читай аппаратный). допустим, размер буфера порта 128 байт. Ты отправляешь 256 байт: sz = write(fd, data, 256). В этом случае sz будет равен 128. Через некоторое время в буфере останется 20 байт, ты повторяешь операцию и результат будет sz = 108.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #905 : Март 26, 2012, 17:39 »

А, ок. С *nix примерно ясно.

UPD:
Просто такое в впечатление, что винде этот "аппаратный" буфер просто неимоверных размеров.  Улыбающийся
За раз может отправлять до 8192 байта (больше просто не проверял).
Хотя, размер его можно задавать, но по умолчанию он 4096 байт (если не ошибаюсь).

Да и логика работы у него (драйвера) по-ходу иная нежели в никсах.
Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #906 : Март 29, 2012, 09:56 »

Кто-то выложил ролик на ютуб где тестирует QSerialDevice 2.0 на WinCE

Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #907 : Март 29, 2012, 10:32 »

где тестирует QSerialDevice 2.0 на WinCE
Правда пишет qserialdewice Смеющийся
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #908 : Март 29, 2012, 10:54 »

И что?
Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #909 : Март 29, 2012, 11:08 »

Кстати, принимаю пожелания на examples, какие бы вы хотели видеть в аддоне.

Пока что предполагается две штуки:

1. Терминал - простое GUI приложение, аналогичное гипертерминалу (только гораздо проще).
Уже есть реализация.

2. Взять что-ли еще и тест /guiapp от предыдущей QSerialDevice 2.0 , подрихтовать и переименовать его (ХЗ во что переименовать)
и добавить в примеры.

Хватит ли этого кол-ва?
Записан

ArchLinux x86_64 / Win10 64 bit
b-s-a
Гость
« Ответ #910 : Март 29, 2012, 15:47 »

для начала точно хватит
Записан
Bepec
Гость
« Ответ #911 : Апрель 05, 2012, 13:22 »

Интересуюсь, библиотека уже доступна для работы? Или пока находится в "тестировании".

Если доступна, то где.

Записан
iroln
Гость
« Ответ #912 : Апрель 05, 2012, 14:15 »

Мне тоже интересно, как там дела со стабильностью и документацией, в продакшене уже можно использовать?
Хотелось бы больше документации и простых примеров.

И ещё вопрос: Возможно сделать биндинг к Python для PySide и PyQt4? Она же у вас, как я понимаю, асинхронная, сигналы, Qt-way и т.д. Хотелось бы использовать её в своих рабочих проектах на PySide вместо PySerial (лицензия, надеюсь, совпадает с Qt-шной).
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #913 : Апрель 05, 2012, 14:35 »

Цитата: Bepec
Интересуюсь, библиотека уже доступна для работы? Или пока находится в "тестировании".
Еще только в тестировании.

Цитата: Bepec
Если доступна, то где.
Читай тут http://qt-project.org/wiki/QtSerialPort_Russian

Цитата: iroln
Мне тоже интересно, как там дела со стабильностью и документацией, в продакшене уже можно использовать?
Пока что никаких кардинальных изменений в структуру внесено не было,
стабильность где-то на уровне QSerialDevice 2.0.

Пробуй Улыбающийся

Цитата: iroln
Хотелось бы больше документации и простых примеров.
Пока общая документация особо не разделена по разделам и т.п.,
я не знаю что писать Улыбающийся .
Классы и все методы задокументированы ИМХО, в полном объеме,
желательно только проверить на ошибки в английском и т.п.

Из примеров имеется только Terminal и Enumerator.
Думаю добавить еще BlockingTerminal и всё!

Кто хочет еще примеров - пусть пишет и оформляет сам.

Цитата: iroln
И ещё вопрос: Возможно сделать биндинг к Python для PySide и PyQt4? Она же у вас, как я понимаю, асинхронная, сигналы, Qt-way и т.д. Хотелось бы использовать её в своих рабочих проектах на PySide вместо PySerial (лицензия, надеюсь, совпадает с Qt-шной).
Наверное возможно делать биндинг, но я этого делать не буду.
Лицензия совпадает с Qt-шной

UPD: сейчас идет процесс адаптации аддона для Qt4 (т.к. изначально планировался только для Qt5).
Т.е., если все получится - то можно будет использовать аддон и в Qt4 и в Qt5.
« Последнее редактирование: Апрель 05, 2012, 14:37 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
iroln
Гость
« Ответ #914 : Апрель 05, 2012, 14:45 »

...
Пока общая документация особо не разделена по разделам и т.п.,
я не знаю что писать Улыбающийся .
Классы и все методы задокументированы ИМХО, в полном объеме,
желательно только проверить на ошибки в английском и т.п.
...
Так, главное, чтобы API был описан подробно. Документация в стиле Qt, созданная генератором доки вполне сгодится, если для каждого класса/метода будет подробное описание в коде.
Записан
Страниц: 1 ... 59 60 [61] 62 63 ... 88   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.079 секунд. Запросов: 23.