Function ModenSeach(com As Integer, Default As String) As String
Dim a As String
On Error GoTo aa:
MSComm.CommPort = com
MSComm.InputMode = comInputModeBinary
MSComm.Settings = "9600,n,8,1"
If MSComm.PortOpen = True Then
MSComm.PortOpen = False
End If
MSComm.DTREnable = True
MSComm.EOFEnable = True
MSComm.RTSEnable = True
MSComm.PortOpen = True
MSComm.Output = "at"
a = EcrReadOne(2): a = LCase(a)
If InStr(a, "at") <> 0 Or InStr(a, "ok") <> 0 Then
ModenSeach = "Moden"
Else
ModenSeach = Default
End If
Exit Function
aa:
ModenSeach = Default
'EndTransmit
End Function Function EcrReadOne(number As Integer) As String
Dim out() As Byte, i As Integer, data As String data = "": i = 1
Do
DoEvents: i = i + 1
Debug.Print MSComm.InBufferCount
Loop Until (MSComm.InBufferCount >= number Or i >= 800) ' one plu item read
If i >= 800 Then
EcrReadOne = ""
Exit Function
End If
out() = MSComm.Input
For i = 1 To number
data = data + Chr(out(i))
Next
EcrReadOne = Trim(data)
End Function用这个试试!!
Dim a As String
On Error GoTo aa:
MSComm.CommPort = com
MSComm.InputMode = comInputModeBinary
MSComm.Settings = "9600,n,8,1"
If MSComm.PortOpen = True Then
MSComm.PortOpen = False
End If
MSComm.DTREnable = True
MSComm.EOFEnable = True
MSComm.RTSEnable = True
MSComm.PortOpen = True
MSComm.Output = "at"
a = EcrReadOne(2): a = LCase(a)
If InStr(a, "at") <> 0 Or InStr(a, "ok") <> 0 Then
ModenSeach = "Moden"
Else
ModenSeach = Default
End If
Exit Function
aa:
ModenSeach = Default
'EndTransmit
End Function Function EcrReadOne(number As Integer) As String
Dim out() As Byte, i As Integer, data As String data = "": i = 1
Do
DoEvents: i = i + 1
Debug.Print MSComm.InBufferCount
Loop Until (MSComm.InBufferCount >= number Or i >= 800) ' one plu item read
If i >= 800 Then
EcrReadOne = ""
Exit Function
End If
out() = MSComm.Input
For i = 1 To number
data = data + Chr(out(i))
Next
EcrReadOne = Trim(data)
End Function用这个试试!!
上面的方法只能适用于Modem正确方式是这样:
Public Const ERROR_SUCCESS = 0&
Public Const APINULL = 0&
Public Const HKEY_LOCAL_MACHINE = &H80000002Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKeyAs As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As LongPublic Const REG_SZ = 1
Public Function IsConnected() As Boolean '判断是否上网,不用解释了吧? ^_^
Dim hKey As Long, lpSubKey As String, phkResult As Long, lpValueName As String, lpReserved As Long, lpType As Long, lpData As Long, lpcbData As Long, hResult As Long
IsConnected = False
lpSubKey = "System\CurrentControlSet\Services\RemoteAccess"
hKey = RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, phkResult)If hKey = ERROR_SUCCESS Then
hKey = phkResult
lpValueName = "Remote Connection"
lpReserved = APINULL
lpType = APINULL
lpData = APINULL
lpcbData = APINULL
hResult = RegQueryValueEx(hKey, lpValueName, lpReserved, lpType, ByVal lpData, lpcbData)
lpcbData = Len(lpData)
hResult = RegQueryValueEx(hKey, lpValueName, lpReserved, lpType, lpData, lpcbData)
If hResult = ERROR_SUCCESS Then
If lpData = 0 Then
IsConnected = False
Else
IsConnected = True
End If
End If
End If
End Function
Dim sMsg As String
Dim sName As String
Dim bConnected As BooleanPrivate Sub Form_Load()
' Determine whether we have a connection:
bConnected = InternetConnected(eR, sName) ' The connection state info parameter provides details
' about how we connect:
If (eR And INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM Then
sMsg = sMsg & "Connection uses a modem." & vbCrLf
End If
If (eR And INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN Then
sMsg = sMsg & "Connection uses LAN." & vbCrLf
End If
If (eR And INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY Then
sMsg = sMsg & "Connection is via Proxy." & vbCrLf
End If
If (eR And INTERNET_CONNECTION_OFFLINE) = INTERNET_CONNECTION_OFFLINE Then
sMsg = sMsg & "Connection is Off-line." & vbCrLf
End If
If (eR And INTERNET_CONNECTION_CONFIGURED) = INTERNET_CONNECTION_CONFIGURED Then
sMsg = sMsg & "Connection is Configured." & vbCrLf
Else
sMsg = sMsg & "Connection is Not Configured." & vbCrLf
End If
If (eR And INTERNET_RAS_INSTALLED) = INTERNET_RAS_INSTALLED Then
sMsg = sMsg & "System has RAS installed." & vbCrLf
End If
' Display the connection name and info:
If bConnected Then
Text1.Text = "Connected: " & sName & vbCrLf & vbCrLf & sMsg
Else
Text1.Text = "Not Connected: " & sName & vbCrLf & vbCrLf & sMsg
End If
End Sub
Alias "InternetGetConnectedStateExA" _
(ByRef lpdwFlags As Long, _
ByVal lpszConnectionName As String, _
ByVal dwNameLen As Long, _
ByVal dwReserved As Long _
) As LongPublic Enum EIGCInternetConnectionState
INTERNET_CONNECTION_MODEM = &H1&
INTERNET_CONNECTION_LAN = &H2&
INTERNET_CONNECTION_PROXY = &H4&
INTERNET_RAS_INSTALLED = &H10&
INTERNET_CONNECTION_OFFLINE = &H20&
INTERNET_CONNECTION_CONFIGURED = &H40&
End EnumPublic Property Get InternetConnected( _
Optional ByRef eConnectionInfo As EIGCInternetConnectionState, _
Optional ByRef sConnectionName As String _
) As Boolean
Dim dwFlags As Long
Dim sNameBuf As String
Dim lR As Long
Dim iPos As Long
sNameBuf = String$(513, 0)
lR = InternetGetConnectedStateEx(dwFlags, sNameBuf, 512, 0&)
eConnectionInfo = dwFlags
iPos = InStr(sNameBuf, vbNullChar)
If iPos > 0 Then
sConnectionName = Left$(sNameBuf, iPos - 1)
ElseIf Not sNameBuf = String$(513, 0) Then
sConnectionName = sNameBuf
End If
InternetConnected = (lR = 1)
End Property