Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2010, 22:54   #1
С.М.С
Участник клуба
 
Аватар для С.М.С
 
Регистрация: 29.12.2008
Сообщений: 1,598
По умолчанию Управление COM портом средствами Visual Basic 6.

Сдраствуйте! Изучаю МК AVR, а на данный момент USART. В той литературе, что имеется все "верхние" программы приведены либо на Delphi, либо на С++, а владею пока только VB на среднем уровне. Есть примеры работы с портом и на VB, только там сразу в программе задан порт или вводится пользователем.

Теперь вопрос - Требуется определит свободные COM порты? к примеру, чтобы в comboBox отображались только доступные порты. Если есть ещё и детальное описание работы с портом на VB буду счастлев.
С.М.С вне форума Ответить с цитированием
Старый 05.04.2010, 12:53   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...есть несколько способов ...самый простой - это в лоб, перебрать порты от 1-255 через CreateFile(), если возвращает OK, свободен, потом закрываешь хэндл.

второй - через реестр (код не для VB, но принцип тот-же):
Код:
HKEY hKey;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"),
0,
KEY_QUERY_VALUE,
&hKey)!=ERROR_SUCCESS)return NULL;
   int  NumVal=0;
             char * pValue0=new char[40];
   char * pValue1=new char[40];
   DWORD cValue1=40,cValue0=40,Type,a;
         
         
   while (!(a=RegEnumValue(hKey,NumVal++,pValue0,&cValue0,NULL,&Type,(LPBYTE)pValue1,&cValue1))||a==ERROR_MORE_DATA))
         {
         SendDlgItemMessage(hDlg,IDC_COMPORTS,CB_ADDSTRING,NULL,(LPARAM)pValue1);
// В pValue1 все возможные КОМ порты...
                   cValue1=cValue0=40;
         }      
delete pValue1;
delete pValue0;
третий - через GetDefaultCommConfig():
Код:
Type DCB
    DCBlength as Long
    BaudRate as Long
    fBitFields as Long
    wReserved as Integer
    XonLim as Integer
    XoffLim as Integer
    ByteSize as Byte
    Parity as Byte
    StopBits as Byte
    XonChar as Byte
    XoffChar as Byte
    ErrorChar as Byte
    EofChar as Byte
    EvtChar as Byte
    wReserved1 as Integer
End Type

Type COMMCONFIG
    dwSize as Long
    wVersion as Integer
    wReserved as Integer
    dcbx as DCB
    dwProviderSubType as Long
    dwProviderOffset as Long
    dwProviderSize as Long
    wcProviderData as Byte
End Type
'
Declare Function GetDefaultCommConfig Lib "kernel32" _
    Alias "GetDefaultCommConfigA" (byval lpszName as string, _
             lpCC as COMMCONFIG, lpdwSize as Long) as Long
'
public Function EnumSerPorts(port as Integer) as Long
    'если порт существует, то функция возвращает ненулевое значение
    Dim cc as COMMCONFIG, ccsize as Long
'
    ccsize = LenB(cc)     'получаем размер структуры COMMCONFIG
'
    EnumSerPorts = GetDefaultCommConfig("COM" + Trim(Str(port)) + Chr(0), cc, ccsize)
'
End Function
еще, кое-что по работе на VB + еще + еще
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 05.04.2010 в 13:06.
raxp вне форума Ответить с цитированием
Старый 05.04.2010, 18:22   #3
С.М.С
Участник клуба
 
Аватар для С.М.С
 
Регистрация: 29.12.2008
Сообщений: 1,598
По умолчанию

Спасибо большое! Пока, более чем достаточно, буду разбираться!
С.М.С вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual C++, Visual C#, Visual basic .Net, или Microsoft.Net Что лучше? _PROGRAMM_ Общие вопросы .NET 14 10.10.2012 19:24
Управление LPT портом nikleb Паскаль, Turbo Pascal, PascalABC.NET 5 27.05.2010 19:40
Управление LPT портом Kuzmichinishe Помощь студентам 3 28.09.2009 11:07
Управление внешними устройствами средствами Delphi RockForr Общие вопросы Delphi 7 03.05.2009 22:04