Microsoft Comm Control 6.0 のチェックボックスをONにして適用ボタンを押します。
そうすると、コントロールの場所に電話のコントロールが追加されたはずです。
コントロールをフォームに貼り付けてダブルクリックします、そうすると、Private Sub MSComm1_OnComm() というイベントが作成されたと思います。
そこで、次の様に書き換えてみましょう。
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
MSComm1.InputLen = 0 '読み取るバイト数を指定 0は全て読み込む
Label1.Caption = MSComm1.Input
End Select
End Sub
Option Explicit
Private Declare Sub Sleep Lib "kernel32" ( _
ByVal dwMilliseconds As Long)
Private Function connect(ByVal port As Integer) As Boolean
connect = False
If MSComm1.PortOpen Then MSComm1.PortOpen = False
On Error GoTo Err1
MSComm1.CommPort = port
MSComm1.Settings = "9600,E,8,1" '偶数パリティで設定しているため注意
MSComm1.DTREnable = False
MSComm1.PortOpen = True
connect = True
Err1:
End Function
Private Function portScan() As Integer
Dim portNo As Integer
Dim str As String
For portNo = 1 To 100
If connect(portNo) Then
MSComm1.OutBufferCount = 0 'バッファクリア
Do
MSComm1.Output = "t" & vbCr & vbLf
Loop While MSComm1.OutBufferCount >= 1
Dim i As Integer
For i = 1 To 100
Sleep 10
If MSComm1.InBufferCount > 3 Then
str = MSComm1.Input
If str = ("NG" + vbCrLf) Then
'接続成功
portScan = portNo
Exit Function
End If
End If
Next i
End If
Next portNo
portScan = -1 '接続先のポートが見つからなかった
End Function
Private Sub portScanReset()
'ポート検索用に設定されているため、自分のアプリケーション用に設定しなおす
MSComm1.InputLen = 1
MSComm1.RThreshold = 1
End Sub
Private Sub Form_Load()
Dim portNo As Integer
portNo = portScan()
If portNo <> -1 Then
Form1.Caption = "接続先ポート番号 : " & portNo
Else
Form1.Caption = "接続エラー"
End If
portScanReset
End Sub