將以下程式碼加入專案(置於 Main 之後):
public bool InitCom(string m_port, int m_baudrate)
{
ss_port.PortNum = m_port;
ss_port.BaudRate = m_baudrate;
ss_port.ByteSize = 8;
ss_port.Parity = 0;
ss_port.StopBits = 1;
ss_port.ReadTimeout = 1000;
try
{
if (ss_port.Opened)
{
ss_port.Close();
ss_port.Open();
}
else
{
ss_port.Open();
}
return true;
}
catch (Exception e)
{
MessageBox.Show("錯誤:" + e.Message);
return false;
}
}
按 F5 除錯,此階段僅開啟序列埠,尚無可見功能。
雙擊「連接」按鈕,貼上程式碼:
private void btnConnect_Click(object sender, System.EventArgs e)
{
bool opened = InitCom(ConnectPort.SelectedItem.ToString(),
Convert.ToInt32(ConnectBaudRate.SelectedItem.ToString()));
bool Connected = false;
if (opened)
{
// 讀取手機品牌 AT+CGMI
ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMI\r"));
string response = Encoding.ASCII.GetString(ss_port.Read(128));
if (response.Length > 0)
{
ConnectState.Text = response.Substring(10, 7);
Connected = true;
}
else
{
ConnectState.Text = "與手機連接不成功";
Connected = false;
}
// 讀取手機型號 AT+CGMM
ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMM\r"));
response = Encoding.ASCII.GetString(ss_port.Read(128));
if (response.Length > 0)
{
ConnectState.Text += " " + response.Substring(10, 5) + " 連接中......";
Connected = true;
}
else
{
ConnectState.Text = "與手機連接不成功";
Connected = false;
}
// 讀取簡訊中心號 AT+CSCA?
ss_port.Write(Encoding.ASCII.GetBytes("AT+CSCA?\r"));
response = Encoding.ASCII.GetString(ss_port.Read(128));
if (response.Length > 0)
{
CenterNumber.Text = response.Substring(20, 13);
Connected = true;
}
else
{
Connected = false;
}
if (Connected)
{
btnConnect.Enabled = false;
btnSend.Enabled = true;
}
else
{
btnConnect.Enabled = true;
btnSend.Enabled = false;
}
}
}
按 F5 執行,確保手機連接正常,點擊「連接」應顯示手機型號與簡訊中心號。

圖四、連接後程式介面