.NET 手机通信库 (第一部分) - 获取手机设置
使用 AT 命令与 GSM 调制解调器手机通信
引言
本文介绍了一种使用 AT 命令与手机通信的方法。通常,兼容 GSM 的手机都内置了一个调制解调器,我们可以使用 AT 命令与其通信。AT 命令集在所有手机制造商(包括诺基亚、索尼爱立信、西门子和摩托罗拉)之间应该是通用的,尽管存在细微的差异。
在本文中,我将使用一个开源的 .NET 手机通信库来向您展示与手机通信的各种方法。该库可在 此处 获取。
入门
在我们可以与 GSM 手机通信之前,必须首先建立连接。连接可以是串行、蓝牙或红外。只要我们可以连接到手机,就可以。
在本文中,我建立了与手机的蓝牙连接。首先,我在我的笔记本电脑和诺基亚手机之间建立配对关系,然后在我的手机上选择蓝牙串行端口服务。配置可能因您的蓝牙软件和调制解调器驱动程序而异。如果一切正常,您应该能够在设备管理器中看到配置的蓝牙调制解调器。 成功的配置将显示以下内容
请注意,在我的配置中,配置的 COM 端口是 COM9,波特率为 115200。这些设置将用于连接到手机。
测试配置
设置好蓝牙连接后,我们可以使用超级终端尝试发送 AT 命令,以确保连接正常。
如您所见,AT 命令以“AT”开头。例如,“ATE1”表示回显本地键入的命令,“AT+CGMM”显示手机型号,“AT+CSCA?”显示手机中配置的短信中心号码。
如果现在一切正常,您可以使用本文附带的示例代码来检索各种手机设置。结果将类似于本文顶部显示的屏幕截图。请注意,不同的手机可能支持不同的 AT 命令集。某些 AT 命令可能在某些手机上不可用。
解决方案中的代码非常简单明了。它使用了开源库 atSMS 通过发送 AT 命令来检索各种手机配置。您可以阅读文档和提供的示例中可用的 API 列表。
If cboComPort.Text = String.Empty Then
MsgBox("COM Port must be selected", MsgBoxStyle.Information)
Return
End If
Dim oGsmModem As New GSMModem
oGsmModem.Port = cboComPort.Text
If cboBaudRate.Text <> String.Empty Then
oGsmModem.BaudRate = Convert.ToInt32(cboBaudRate.Text)
End If
If cboDataBit.Text <> String.Empty Then
oGsmModem.DataBits = Convert.ToInt32(cboDataBit.Text)
End If
If cboStopBit.Text <> String.Empty Then
Select Case cboStopBit.Text
Case "1"
oGsmModem.StopBits = Common.EnumStopBits.One
Case "1.5"
oGsmModem.StopBits = Common.EnumStopBits.OnePointFive
Case "2"
oGsmModem.StopBits = Common.EnumStopBits.Two
End Select
End If
If cboFlowControl.Text <> String.Empty Then
Select Case cboFlowControl.Text
Case "None"
oGsmModem.FlowControl = Common.EnumFlowControl.None
Case "Hardware"
oGsmModem.FlowControl = Common.EnumFlowControl.RTS_CTS
Case "Xon/Xoff"
oGsmModem.FlowControl = Common.EnumFlowControl.Xon_Xoff
End Select
End If
Try
oGsmModem.Connect()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
Return
End Try
Try
txtRevision.Text = oGsmModem.Revision
Catch ex As Exception
txtRevision.Text = "Not supported"
End Try
Try
txtIMSI.Text = oGsmModem.IMSI
Catch ex As Exception
txtIMSI.Text = "Not supported"
End Try
Try
txtIMEI.Text = oGsmModem.IMEI
Catch ex As Exception
txtIMEI.Text = "Not supported"
End Try
Try
txtModel.Text = oGsmModem.PhoneModel
Catch ex As Exception
txtModel.Text = "Not supported"
End Try
Try
txtManufacturer.Text = oGsmModem.Manufacturer
Catch ex As Exception
txtManufacturer.Text = "Not supported"
End Try
Try
txtSMSC.Text = oGsmModem.SMSC
Catch ex As Exception
txtSMSC.Text = "Not supported"
End Try
Try
Dim rssi As Rssi = oGsmModem.GetRssi
txtSignal.Text = rssi.Current & " of " & rssi.Maximum
Catch ex As Exception
txtSignal.Text = "Not supported"
End Try
Try
Dim storages() As Storage = oGsmModem.GetStorageSetting
Dim i As Integer
txtSupportedStorage.Text = String.Empty
For i = 0 To storages.Length - 1
Dim storage As Storage = storages(i)
txtSupportedStorage.Text += storage.Name & "(" &_
storage.Used & "/" & storage.Total & "), "
Next
Catch ex As Exception
txtSupportedStorage.Text = "Not supported"
End Try
Try
Dim loc As Location = oGsmModem.GetLocation
txtLocation.Text = "Cell Id: " & loc.CellID & _
", MNC: " & loc.MNC & ", MCC: " & _
loc.MCC & ", LAI: " & loc.LAI
Catch ex As Exception
txtLocation.Text = "Not supported"
End Try
Try
txtPhoneNumber.Text = oGsmModem.MSISDN
Catch ex As Exception
txtPhoneNumber.Text = "Not supported"
End Try
Try
Dim battery As Battery = oGsmModem.GetBatteryLevel
txtBattery.Text = battery.BatteryLevel & "/" & _
battery.MaximumLevel & "(Charging: " &_
battery.BatteryCharged & ")"
Catch ex As Exception
txtBattery.Text = "Not supported"
End Try
在未来的文章中,我将向您展示如何使用 AT 命令和开源库发送 ASCII 和 Unicode 短信。敬请期待...