以前正好写过相关的程序,用的vb。vb的示例里面有相关代码。其他资料可以参考at命令集
Private Sub TestModemPort()
' 保存输入子串的缓冲区
Dim Instring As String
Dim ModemPortNumber As Integer
Dim i As Integer '循环变量
Dim ModemOk As Boolean
'以下代码测试MODEM端口
For i = 1 To 8
On Error GoTo Errorhandle:
TimeCount = 0
MSComm1.CommPort = i
' 9600 波特,无奇偶校验,8 位数据,一个停止位。
MSComm1.Settings = "9600,N,8,1"
' 当输入占用时,
' 告诉控件读入整个缓冲区。
MSComm1.InputLen = 0
' 打开端口。
MSComm1.PortOpen = True
' 将 attention 命令送到调制解调器。
MSComm1.Output = "ATV1Q0" & Chr$(13) ' 确保
' 调制解调器以"OK"响应。
' 等待数据返回到串行端口。
Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
If TimeCount = 2 Then Exit Do '超时退出测试下一端口
If InStr(Buffer$, "OK" & vbCrLf) Then ModemOk = True
Loop Until InStr(Buffer$, "OK" & vbCrLf)
' 从串行端口读 "OK" 响应。
' 关闭串行端口。
MSComm1.PortOpen = False
If ModemOk Then ModemPortNumber = i: Exit For
Next
If Not ModemOk Then MsgBox "没有检测到MODEM,请检查是否已正常连接MODEM,或者是否MODEM正在使用"
Exit Sub
Errorhandle:
Resume Next
End Sub
Private Sub Dial(Number$)
Dim DialString$, FromModem$, dummy
' AT 是贺氏兼容 ATTENTION 命令并且要求发送命令到调制解调器。
' DT 意味着"音频拨号。" 这个拨号命令用于音频, 相对的是脉冲 (DP = 脉冲拨号)。
' Numbers$ 为要拨的电话号码。
' 分号告知调制解调器拨号后返回命令模式(这一点很重要)。
' 一个回车, vbCr, 当发送命令到调制解调器时被要求。
DialString$ = "ATDT" + Number$ + ";" + vbCr
' 通信端口设置
' 假设鼠标器连接到 COM1, 那么通信端口设置为 COM2
'MSComm1.CommPort = 4
MSComm1.Settings = "9600,N,8,1"
' 打开通信端口
On Error Resume Next
MSComm1.PortOpen = True
If Err Then
MsgBox " 更改 CommPort 属性使其使用其他COM口"
Exit Sub
End If
'清空输入缓冲区。
MSComm1.InBufferCount = 0
' 设置逗号暂停时间
MSComm1.Output = "ATs08=2" & vbCr
Do
dummy = DoEvents()
' 如果缓冲区中有数据,则把它读出来。
If MSComm1.InBufferCount Then
Buffer$ = Buffer$ + MSComm1.Input
' 检查 "OK"。
If InStr(Buffer$, "OK") Then
' 提醒用户摘电话。
Beep
' MsgBox "请您摘电话然后按“回车”键或单击“确定”"
Exit Do
End If
End If
Loop
MSComm1.InBufferCount = 0
MSComm1.Output = DialString$
' 等待从调制解调器返回"OK" 。
Do
dummy = DoEvents()
' 如果缓冲区中有数据,则把它读出来。
If MSComm1.InBufferCount Then
FromModem$ = FromModem$ + MSComm1.Input
' 检查 "OK"。
If InStr(FromModem$, "OK") Then
' 提醒用户摘电话。
Beep
MsgBox "请您 先 摘电话然后按“回车”键或单击“确定”"
Exit Do
End If
End If
' 用户是否选择“取消”?
' If CancelFlag Then
' CancelFlag = False
' Exit Do
' End If
Loop
' 断开与调制解调器的连接。
MSComm1.Output = "ATH" + vbCr
' 关闭端口。
MSComm1.PortOpen = False
End Sub