реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Как определить имена существующих ком портов
sergey sva
сообщение Mar 5 2010, 09:35
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Буду использовать метод который просматривает реестр, с определением портов понял , а как например определить какой
порт какую скорость поддерживает сколько бит данных, стоповых тоже в какой то ветке есть запись ?
Go to the top of the page
 
+Quote Post
V_G
сообщение Mar 5 2010, 10:07
Сообщение #17


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



По-моему, любой порт поддерживает любое сочетание параметров, какое зададите (во вменяемом диапазоне, понятно).
В терминале (родном виндовом) у меня у хардовых портов можно выставить скорость до 115 кБод (по-моему), у виртуальных (USB-COM) - до 960 кБод.
По сути это должно определяться драйвером, тесно привязанным к аппаратуре.
Go to the top of the page
 
+Quote Post
Nik.
сообщение Mar 19 2010, 18:13
Сообщение #18





Группа: Участник
Сообщений: 9
Регистрация: 27-02-08
Пользователь №: 35 443



На сегодняшний день мы делаем так !! с ипользованием Setup Device Information api (Написано в Builder С++)

Код
try
{
HDEVINFO hDI;
Tstring List *sl_com_fullnames = new TStringLis();
  SP_DEVINFO_DATA DDI;
  DWORD uReq, uTyp, uEnum;
  BOOL fErr;
  char IdBuffer[ 1024 ];

  DDI.cbSize = sizeof( SP_DEVINFO_DATA );


//Получение  GUID_DEVCLASS_MULTIPORTSERIAL
  hDI = SetupDiGetClassDevs( &GUID_DEVCLASS_MULTIPORTSERIAL, NULL, NULL,
    DIGCF_PRESENT | DIGCF_PROFILE );
  uEnum = 0;
  do
  {

    fErr = SetupDiEnumDeviceInfo( hDI, uEnum, &DDI );
    if( !fErr )
      break;
    fErr = SetupDiGetDeviceRegistryProperty( hDI, &DDI, SPDRP_FRIENDLYNAME,
      &uTyp, IdBuffer, 1024, &uReq );
    if( !fErr )
      fErr = SetupDiGetDeviceRegistryProperty( hDI, &DDI, SPDRP_DEVICEDESC,
        &uTyp, IdBuffer, 1024, &uReq );

    sl_com_fullnames->Add( IdBuffer);
    uEnum ++;
  } while( 1 );

//Устройств GUID_DEVCLASS_PORTS
  hDI = SetupDiGetClassDevs( &GUID_DEVCLASS_PORTS, NULL, NULL,
    DIGCF_PRESENT | DIGCF_PROFILE );
  uEnum = 0;
  do
  {

    fErr = SetupDiEnumDeviceInfo( hDI, uEnum, &DDI );
    if( !fErr )
      break;
    fErr = SetupDiGetDeviceRegistryProperty( hDI, &DDI, SPDRP_FRIENDLYNAME,
      &uTyp, IdBuffer, 1024, &uReq );
    if( !fErr )
      fErr = SetupDiGetDeviceRegistryProperty( hDI, &DDI, SPDRP_DEVICEDESC,
        &uTyp, IdBuffer, 1024, &uReq );

    sl_com_fullnames->Add( IdBuffer );
    uEnum ++;
  } while( 1 );

Цитата(V_G @ Mar 5 2010, 13:07) *
По-моему, любой порт поддерживает любое сочетание параметров, какое зададите (во вменяемом диапазоне, понятно).
В терминале (родном виндовом) у меня у хардовых портов можно выставить скорость до 115 кБод (по-моему), у виртуальных (USB-COM) - до 960 кБод.
По сути это должно определяться драйвером, тесно привязанным к аппаратуре.


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

Сообщение отредактировал rezident - Mar 20 2010, 02:56
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 16:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01491 секунд с 7
ELECTRONIX ©2004-2016