Проверяем наличие COM-портов
Автор: Dimitrios Papadopoulos
Многие программы предоставляют пользователю
возможность выбрать последовательный порт,
поэтому необходимо чтобы программа исключала
ситуации, когда пользователь выберет
несуществующий порт. Следующий пример
компилируется в Visual Basic 5 или выше и работает как
Win95-98 так и в Win NT 4.
option Explicit
'***********************************************************************
' Module : EnumPorts
' FileName : EnumPorts.BAS
' Author : Dimitrios Papadopoulos
' date Created : 10/08/00 22:07:10
'
' Copyright : 2000, Dimitrios Papadopoulos. All Rights Reserved.
'
' Description : Enumerates Existance of COM Ports
'
' Change History :
' 1.0 10 August 2000
' Dimitrios Papadopoulos
' Initial Version
'
'***********************************************************************
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
|