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

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

Страниц: 1 ... 28 29 [30] 31 32 ... 88   Вниз
  Печать  
Автор Тема: Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА].  (Прочитано 752884 раз)
asvil
Гость
« Ответ #435 : Июнь 16, 2011, 16:42 »

Поддерживаю b-s-a
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #436 : Июнь 16, 2011, 16:48 »

>>ты посмотри класс QPrinterInfo. Там нет ничего похожего.
мне он как-то побоку. Я им не пользуюсь

Если либу делать, то делать так, чтобы её можно было максимально эффективно использовать. И наче вообще смысла нет, пусть останется как есть и сейчас всё из неё выковырять можно.

Цикл и можно и нужно записать внутри либы.

И к стати, если с именем порта всё более или мение сносно, то как например дела обстаят со скоростью.
Как заполнить комбобокс и как потом его использовать?

Записан

Юра.
asvil
Гость
« Ответ #437 : Июнь 16, 2011, 16:52 »

А откуда kuzulis-y знать кто как комбо бокс юзает. Я например вообще модель люблю в него засунуть, так что же мне kuzulis должен qabstractmodel* выдать?
Записан
b-s-a
Гость
« Ответ #438 : Июнь 16, 2011, 16:58 »

И к стати, если с именем порта всё более или мение сносно, то как например дела обстаят со скоростью.
Как заполнить комбобокс и как потом его использовать?
Код
C++ (Qt)
foreach(int speed, info.standardBauds())
  comboBox->addItem(QString::number(speed));
Записан
b-s-a
Гость
« Ответ #439 : Июнь 16, 2011, 17:48 »

Кстати, подсмотрел тут в конкурирующей библиотеке, что можно метод работы со скоростью назвать просто rate:
Код
C++ (Qt)
class SerialPort
{
//...
  enum Rates {
      Rate9600,
      Rate19200,
//...
  };
//...
  bool setRate(int rate);
  int rate() const;
//...
};
 
class SerialPortInfo
{
//...
  QList<int> standardRates() const;
//...
};
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #440 : Июнь 16, 2011, 17:52 »

А че тролли разве не только своей лаборатории доверяют? Прям так возьмут? Может сначала спросить? или я что-то пропустил...

В Дублине на Миго конференции в кулуарах я пообщался с Thiago Macieira по этому поводу (поддержка COM порта в Qt). Ответили, что в их планы это не входит, но любые контрибуции в этом направлении приветствуются.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
b-s-a
Гость
« Ответ #441 : Июнь 16, 2011, 17:56 »

любые контрибуции в этом направлении приветствуются.
Тем более!!!
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #442 : Июнь 16, 2011, 18:01 »

>>кто как комбо бокс юзает. Я например вообще модель люблю в него засунуть
>>так что же мне kuzulis должен qabstractmodel* выдать?
Если ты так любишь применительно к COM-порту, то ты тот ещё лисапедист.
Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #443 : Июнь 16, 2011, 18:05 »

Тем более, что не сложно сделать:
Код
C++ (Qt)
foreach(const SerialPortInfo &info, SerialPortInfo::availablePorts())
  comboBox->addItem(info.name());
Код
C++ (Qt)
foreach(int speed, info.standardBauds())
  comboBox->addItem(QString::number(speed));
Ну в принципе убедил, довольно компактно. Пусть так будет.
Записан

Юра.
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #444 : Июнь 16, 2011, 19:17 »

Ну, парни, лады. Раз с API в принципе более менее устаканились, теперь можно создавать новую ветку на гиториусе.
Теперь:
1. Как назовем эту ветвь?
2. Как в "родном" Git GUI под винду теперь создать и залить на сервер новую ветку? Желательно по пунктам (а то я могу запаганить всё что там есть сейчас Улыбающийся ).
 
Записан

ArchLinux x86_64 / Win10 64 bit
b-s-a
Гость
« Ответ #445 : Июнь 16, 2011, 20:53 »

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

Записан
b-s-a
Гость
« Ответ #446 : Июнь 16, 2011, 21:08 »

Теперь предлагаю спуститься с небес чуть ближе к реализации...
Лично мне (точнее, моей конторе) нужна реализация позволяющая строго контролировать время приема/передачи данных. Дискретизация времени в Windows полностью не устраивает (нужна точность 5 мс, а в Windows ~18 мс), поэтому в моей реализации в waitForReadyRead использовано ожидание посредством комбинации стандартного (waitForSingleObject) и точного (через PerfomanceCounters) методов, а waitForBytesWritten я вообще реализовал через жесткое ожидание (количество байт * количество бит в посылке (6 ... 12) / скорость). Это все необходимо, так как нужно отправить 1 байт с четностью Mark, затем сколько-то с четностью Space (между всеми байтами не более 5 мс), дождаться полного ухода данных, а затем ждать ответ с четностью Space не более 20 мс (между соседними байтами не более 5 мс).
Дальше, я против создания каких-либо служебных потоков. Лучше просто повесить стандартные таймеры (startTimer/killTimer) для проверки состояния линий и отправки/приема данных. Периодичность можно захардкодить (200 мс, например) или дать пользователю возможность настройки (setLineCheckLatency, например). Более того, события отправки данных таймер даже хардкодить не надо - достаточно просто обновлять время срабатывания после выполнения writeData.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #447 : Июнь 17, 2011, 05:43 »

>>2. Как в "родном" Git GUI под винду теперь создать и залить на сервер новую ветку?
Можно в Git GUI, а можно и в Git Tk, который историю показывает.

Перейти в Git Tk можно из Git GUI, Меню "Хранилище (репозиторий)" -> "Показать историю всех ветвей"

*Git GUI
Меню "Ветвь"->"Сздать"
вводишь название
указываешь начальную версию (ветвь от которой ветвится нужно)
Если хочешь сразу на неё перейти ставишь галку "после создания сделать текущей"

* в Git Tk (удобнее когда надо задним числом её сделать)
тычешь состояние, от которого хочешь ветвится
правой кнопкой вызываешь контекстное меню, в нём пункт "Создать ветвь" в открывшееся окно вводишь имя.
Всё, ветвь создана, если хочешь на неё перейти, тычешь правой кнопкой по имени ветви (зелёненькая подпись), а не по состоянию. В контекстном меню выбираешь "Перейти на эту ветвь" (Если выскакивает окно о типе перехода, то можно выбрать "Жёсткий" вариант, но не сохранённые изменения в рабочем каталоге будут потеряны)
Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #448 : Июнь 17, 2011, 06:09 »

>>нужна реализация позволяющая строго контролировать время приема/передачи данных.
Если речь идёт о приёме по таймаутам, то это не реально.
Т.к. система (в драйвере порта) не регистрирует время, в которое происходит прерывание от приёмника UARTа.
Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #449 : Июнь 17, 2011, 06:11 »

>>Дальше, я против создания каких-либо служебных потоков. Лучше просто повесить стандартные
>>таймеры (startTimer/killTimer) для проверки состояния линий и отправки/приема данных.
А зачем потоки? Есть же события в системе. Кажется называется overlaped
Записан

Юра.
Страниц: 1 ... 28 29 [30] 31 32 ... 88   Вверх
  Печать  
 
Перейти в:  


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