Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аналог SetupComm для *.nix ? 
:(
    Опции темы
kuzulis
Дата 3.11.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 5.9.2007

Репутация: нет
Всего: 1



Доброго времени суток!

Подскажите пожалуйста, имеется ли в *.nix какая-либо функция для установки размера буферов приема/передачи для драйвера последовательного устройства?

Например в Винде имеется функция  SetupComm  для установки размеров буферов приема/передачи
Код

BOOL WINAPI SetupComm(
  __in  HANDLE hFile,
  __in  DWORD dwInQueue,
  __in  DWORD dwOutQueue
);


А также имеется функция для получения текущего размера буферов:   GetCommProperties 
Код

BOOL WINAPI GetCommProperties(
  __in   HANDLE hFile,
  __out  LPCOMMPROP lpCommProp
);


Очень нужны аналогичные функции в *.nix , есть ли они вообще? Я что-то не нашел...

Посмотрел исходники Wine - там все через  DeviceIoControl  идет:
Код

713 BOOL WINAPI SetupComm(HANDLE handle, DWORD insize, DWORD outsize)
714 {
715     SERIAL_QUEUE_SIZE   sqs;
716     DWORD dwBytesReturned;
717 
718     sqs.InSize = insize;
719     sqs.OutSize = outsize;
720     return DeviceIoControl(handle, IOCTL_SERIAL_SET_QUEUE_SIZE,
721                            &sqs, sizeof(sqs), NULL, 0, &dwBytesReturned, NULL);


Может в *.nix по аналогии можно как-то через   ioctl()  или  fcntl()  реализовать?

PM MAIL   Вверх
MAKCim
Дата 3.11.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



если драйвер реализует соответствующие ioctl()-вызовы, то почему нет? ;)


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
kuzulis
Дата 4.11.2009, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 5.9.2007

Репутация: нет
Всего: 1



MAKCim, а как узнать реализует драйвер вызовы или нет?

Например интересуют драйверы стандартного последовательного у-ва (м/сх которые на материнке), а также к примеру шнурки-конвертеры usb/serial . 

Я не представляю как это можно сделать. Порылся в хейдерах, в инете - на предмет команд в ioctl() - но ничего похожего (или напоминающего)  типа IOCTL_SERIAL_SET_QUEUE_SIZE и т.п. не нашел. :(

Да и в гугле не нашел ни примеров .. ни чего..  :(
PM MAIL   Вверх
MAKCim
Дата 4.11.2009, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



как узнать?
находишь исходники драйвера и смотришь на предмет наличия в нем struct file_operations с обработчиком ioctl
в этой функции все поддерживаемые для него ioctl()-вызовы


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
kuzulis
Дата 4.11.2009, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 5.9.2007

Репутация: нет
Всего: 1



Так фишка в том, что я не знаю какой драйвер будет использоваться в том или ином случае, т.к. их мильён на свете!

Мне нужно при любом раскладе иметь возможность менять/получать размер буферов приема/передачи!  (как в винде например, в WinAPI есть такая возможность, и там это НЕ зависит от того, какой используется драйвер)

В этом то вся проблема.
PM MAIL   Вверх
xvr
Дата 5.11.2009, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата

Посмотрел исходники Wine - там все через  DeviceIoControl  идет:
Ну так и копай его дальше - на предмет исходников DeviceIoControl   smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0529 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.