📄 frmmain.frm
字号:
MsgBox "请输入对方手机号码!", vbExclamation + vbOKOnly, "提示"
Exit Sub
End If
If CheckMb(txtMB.Text) = False Then
MsgBox "对方手机号码错误!", vbCritical + vbOKOnly, "错误"
Exit Sub
End If
If txtSend.Text = "" Then
MsgBox "请输入短信内容!", vbExclamation + vbOKOnly, "提示"
Exit Sub
End If
strCSCA = txtCSCA.Text
strPDU = GetPDU(strCSCA, txtMB.Text, txtSend.Text)
If strCSCA = "" Then
strPDU_Len = Trim(Str((Len(strPDU) / 2 - 1)))
Else
strPDU_Len = Trim(Str((Len(strPDU) / 2 - 9)))
End If
MSComm1.Output = "AT+CMGF=0;+CMGS=" + strPDU_Len + vbCr
nModemStatus = SMS_SEND0_STATUS
txtSMSResult.Text = ""
End Sub
Private Sub cmdSet_Click()
If txtCSCA.Text = "" Then
MsgBox "请先输入短信中心号码!", vbExclamation + vbOKOnly, "提示"
Exit Sub
End If
If CheckMb(txtCSCA.Text) = False Then
MsgBox "手机号码错误!", vbCritical + vbOKOnly, "错误"
Exit Sub
End If
MSComm1.Output = "AT+CSCS=" + Chr(&H22) + "GSM" + Chr(&H22) + ";+CSCA=+86" + txtCSCA.Text + vbCr
End Sub
Private Sub cmdSIMZero_Click()
DeleteData Adodc1, 1
End Sub
Private Sub cmdSMS_Tip_Click()
MSComm1.Output = "AT+CNMI=2,1,0,0,1" + vbCr
End Sub
Private Sub cmdTest_Click()
If txtTest.Text = "" Then
MsgBox "请先输入命令!", vbExclamation + vbOKOnly, "提示"
Exit Sub
End If
txtReply.Text = ""
MSComm1.Output = txtTest.Text + vbCr
End Sub
Private Sub cmdUnRead_Click()
MSComm1.Output = "AT+CMGF=1;+CMGL=" + Chr(&H22) + "REC UNREAD" + Chr(&H22) + vbCr
nModemStatus = CMGL_STATUS
End Sub
Private Sub cmdWriteSim_Click()
If txtCapacity.Text = "" Then
MsgBox "请先读取SIM卡的基本信息!", vbExclamation + vbOKOnly, "提示"
Exit Sub
End If
With Adodc1.Recordset
If .RecordCount < 1 Then
MsgBox "电话簿为空!", vbCritical + vbOKOnly, "提示"
Exit Sub
End If
If bWriteSim = False Then
.MoveFirst
bWriteSim = True
End If
If ![Location] > Val(txtCapacity.Text) Then
MsgBox "电话位置已经超过SIM卡的范围!", vbCritical + vbOKOnly, "错误"
nModemStatus = OPEN_STATUS
Exit Sub
End If
MSComm1.Output = "AT+CSCS=" + Chr(&H22) + "UCS2" + Chr(&H22) + ";+CPBW=" + ts(![Location]) + "," + Chr(&H22) + ![Phone] + Chr(&H22) + _
",129," + Chr(&H22) + StringToUnicodeChars(![Name]) + Chr(&H22) + vbCr
End With
nModemStatus = WRITE_SIM_STATUS
End Sub
Private Sub cmdZero_Click()
DeleteData Adodc1, 1
End Sub
Private Sub cmdZeroGroup_Click()
DeleteData Adodc1, 1
End Sub
Private Sub DG_Book_HeadClick(ByVal ColIndex As Integer)
With Adodc1
.RecordSource = "select * from SIM order by [" + _
.Recordset.Fields(ColIndex).Name + "]"
.CommandType = adCmdUnknown
.Refresh
End With
End Sub
Private Sub DG_SMS_Click()
With Adodc1.Recordset
If .EOF Or .BOF Or .RecordCount < 1 Then Exit Sub
txtSend.Text = ![Content]
End With
End Sub
Private Sub Form_Load()
cmbCOM.AddItem "1"
cmbCOM.AddItem "2"
cmbCOM.AddItem "3"
cmbCOM.AddItem "4"
cmbCOM.ListIndex = 0
cmdClose.Enabled = False
strDataPath = App.Path + "\gsm.mdb"
If CheckFile(strDataPath) = False Then
MsgBox "数据库不存在!", vbCritical + vbOKOnly, "错误"
Exit Sub
End If
With Adodc1
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _
strDataPath + ";Persist Security Info=False"
.CommandType = adCmdUnknown
End With
DisplayGroup
End Sub
Private Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
timer_Comm.Enabled = False
timer_Status.Enabled = False
End Sub
Private Sub MSComm1_OnComm()
Dim strTmp As String
If MSComm1.CommEvent <> comEvReceive Then Exit Sub
If bStartNew = False Then
strInBuffers = ""
bStartNew = True
End If
strTmp = MSComm1.Input
strInBuffers = strInBuffers + strTmp
If bStartNew = True Then
timer_Comm.Enabled = False
timer_Comm.Enabled = True
End If
End Sub
Private Sub Option1_Click(Index As Integer)
Select Case Index
Case 0
cmdGroup.Visible = True
cmdAdd.Visible = True
cmdDelGroup.Visible = True
cmdZeroGroup.Visible = True
cmdDel.Visible = False
cmdUnRead.Visible = False
cmdAll.Visible = False
cmdZero.Visible = False
cmdCard.Visible = False
cmdReadSIM.Visible = False
cmdWriteSim.Visible = False
cmdClsSIM.Visible = False
cmdSIMZero.Visible = False
cmdNum.Visible = False
cmdAdjust.Visible = False
txtCapacity.Visible = False
txtPhone_Len.Visible = False
txtName_Len.Visible = False
DisplayGroup
Case 1
cmdDel.Visible = True
cmdUnRead.Visible = True
cmdAll.Visible = True
cmdZero.Visible = True
cmdGroup.Visible = False
cmdAdd.Visible = False
cmdDelGroup.Visible = False
cmdZeroGroup.Visible = False
cmdCard.Visible = False
cmdReadSIM.Visible = False
cmdWriteSim.Visible = False
cmdClsSIM.Visible = False
cmdSIMZero.Visible = False
cmdNum.Visible = False
cmdAdjust.Visible = False
txtCapacity.Visible = False
txtPhone_Len.Visible = False
txtName_Len.Visible = False
DisplaySMS
Case 2
cmdCard.Visible = True
cmdReadSIM.Visible = True
cmdWriteSim.Visible = True
cmdClsSIM.Visible = True
cmdSIMZero.Visible = True
cmdNum.Visible = True
cmdAdjust.Visible = True
txtCapacity.Visible = True
txtPhone_Len.Visible = True
txtName_Len.Visible = True
cmdGroup.Visible = False
cmdAdd.Visible = False
cmdDelGroup.Visible = False
cmdZeroGroup.Visible = False
cmdDel.Visible = False
cmdUnRead.Visible = False
cmdAll.Visible = False
cmdZero.Visible = False
DisplayBook
End Select
End Sub
Private Sub timer_comm_Timer()
Dim strTmp As String
bStartNew = False
timer_Comm.Enabled = False
txtReply.Text = Format(Time, "h:mm:ss || ") + strInBuffers
If nModemStatus = SMS_SEND0_STATUS And InStr(1, strInBuffers, ">") <> 0 Then
MSComm1.Output = strPDU + Chr(&H1A)
nModemStatus = SMS_SEND1_STATUS
Exit Sub
End If
If nModemStatus = SMS_SEND1_STATUS Then
If InStr(1, UCase(strInBuffers), "ERROR") <> 0 Then
txtSMSResult.Text = "失败"
If bGroup = True Then
With Adodc1.Recordset
![Remark] = "失败"
.Update
.MoveNext
If .EOF Then
.Requery
bGroup = False
MsgBox "短信群发完毕!", vbInformation + vbOKOnly, "提示"
Else
cmdGroup_Click
End If
End With
End If
GoTo END_MARK
End If
nModemStatus = SMS_SEND2_STATUS
Exit Sub
End If
If nModemStatus = SMS_SEND2_STATUS Then
With Adodc1.Recordset
If (InStr(1, strInBuffers, "OK") = 0) And _
InStr(1, strInBuffers, "ERROR") = 0 Then Exit Sub
If InStr(1, strInBuffers, "OK") <> 0 Then
txtSMSResult.Text = "成功"
If bGroup = True Then ![Remark] = "已发"
End If
If InStr(1, strInBuffers, "ERROR") <> 0 Then
txtSMSResult.Text = "失败"
If bGroup = True Then ![Remark] = "失败"
End If
If bGroup = True Then
.Update
.MoveNext
If .EOF Then
.Requery
bGroup = False
MsgBox "短信群发完毕!", vbInformation + vbOKOnly, "提示"
Else
cmdGroup_Click
Exit Sub
End If
End If
End With
End If
If nModemStatus = CSCA_STATUS Then
strTmp = NextString(strInBuffers, "CSCA:")
strTmp = GetNoString(strTmp, Chr(&H22), 1)
If Mid(strTmp, 1, 3) = "+86" Then strTmp = Mid(strTmp, 4)
txtCSCA.Text = strTmp
End If
If nModemStatus = SMS_CARD_STATUS Then
'AT+CPBS="SM";+CPBR=?+CPBR: (1-200),20,14OK
If InStr(1, strInBuffers, "CPBR:") <> 0 Then
strTmp = NextString(strInBuffers, "(")
strTmp = NextString(strTmp, "-")
txtCapacity.Text = GetNoString(strTmp, ")", 0)
strTmp = NextString(strTmp, ",")
txtPhone_Len.Text = GetNoString(strTmp, ",", 0)
strTmp = NextString(strTmp, ",")
txtName_Len = GetNoString(strTmp, vbCrLf, 0)
End If
End If
If nModemStatus = CMGL_STATUS Then
If InStr(1, strInBuffers, "OK") <> 0 Then ProcessCMGL strInBuffers
End If
If nModemStatus = CMGD_STATUS Then
If InStr(1, strInBuffers, "OK") <> 0 Then
With Adodc1.Recordset
![Mark] = "删除"
.Update
End With
End If
End If
If nModemStatus = CPBR_STATUS Then ProcessCPBR strInBuffers
If nModemStatus = WRITE_SIM_STATUS Then
With Adodc1.Recordset
.MoveNext
If .EOF Then
bWriteSim = False
MsgBox "写SIM卡完毕!", vbInformation + vbOKOnly, "提示"
Else
cmdWriteSim_Click
Exit Sub
End If
End With
End If
If nModemStatus = CLEAR_SIM_STATUS Then
If InStr(1, strInBuffers, "OK") <> 0 Then
nSimNo = nSimNo + 1
If nSimNo > Val(txtCapacity.Text) Then
bClearSim = False
MsgBox "擦除SIM卡完毕!", vbInformation + vbOKOnly, "提示"
Else
cmdClsSIM_Click
Exit Sub
End If
End If
End If
END_MARK:
nModemStatus = OPEN_STATUS
End Sub
Private Sub timer_Status_Timer()
If MSComm1.PortOpen = True Then
cmdGet.Enabled = True
cmdSet.Enabled = True
cmdSend.Enabled = True
cmdTest.Enabled = True
cmdGroup.Enabled = True
cmdUnRead.Enabled = True
cmdDel.Enabled = True
cmdAll.Enabled = True
cmdReadSIM.Enabled = True
cmdWriteSim.Enabled = True
cmdCard.Enabled = True
cmdClsSIM.Enabled = True
cmdCallerID.Enabled = True
cmdSMS_Tip.Enabled = True
Else
cmdGet.Enabled = False
cmdSet.Enabled = False
cmdSend.Enabled = False
cmdTest.Enabled = False
cmdGroup.Enabled = False
cmdUnRead.Enabled = False
cmdDel.Enabled = False
cmdAll.Enabled = False
cmdReadSIM.Enabled = False
cmdWriteSim.Enabled = False
cmdCard.Enabled = False
cmdClsSIM.Enabled = False
cmdCallerID.Enabled = False
cmdSMS_Tip.Enabled = False
End If
End Sub
Private Sub txtTest_KeyUp(KeyCode As Integer, Shift As Integer)
If cmdTest.Enabled = True And KeyCode = 13 Then
cmdTest_Click
txtTest.Text = ""
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -