JustinIO.CommPort ss_port = new JustinIO.CommPort();
///
/// 初始化串口方法
///
///
///
///
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;
}
}
#region 连接手机,并获取手机信息
/// <summary>
/// 连接手机,并获取手机信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnConnect_Click(object sender, System.EventArgs e)
{
bool opened = InitCom(cbConnectPort.SelectedItem.ToString(), Convert.ToInt32(cbConnectBaudRate.SelectedItem.ToString()));//打开并初始化串口
bool Connected = false;
if (opened)
{
ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMI\r")); //获取手机品牌
string response = Encoding.ASCII.GetString(ss_port.Read(128));
if (response.Length > 0)
{
lblState.Text = response.Replace("\r\n", " ") + " 连接成功!";
lblState.ForeColor = Color.Green;
Connected = true;
}
else
{
lblState.Text = "与手机连接不成功";
lblState.ForeColor = Color.Red;
Connected = false;
}
#region 暂时不获取手机型号
//ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMM\r"));//获取手机型号
//response = Encoding.ASCII.GetString(ss_port.Read(128));
//if (response.Length > 0)
//{
// lblState.Text += " " + response.Replace("\r\n", " ") + " 连接成功!";
// lblState.ForeColor = Color.Green;
// Connected = true;
//}
//else
//{
// lblState.Text = "与手机连接不成功";
// lblState.ForeColor = Color.Red;
// Connected = false;
//}
#endregion
ss_port.Write(Encoding.ASCII.GetBytes("AT+CSCA?\r"));//获取手机短信中心号
response = Encoding.ASCII.GetString(ss_port.Read(128));
if (response.Length > 0)
{
txtCenterNumber.Text = response.Substring(response.IndexOf("+86") + 1, 13);
Connected = true;
}
else
{
Connected = false;
}
if (Connected == true)
{
btnConnect.Enabled = false;
btnSend.Enabled = true;
}
else
{
btnConnect.Enabled = true;
btnSend.Enabled = false;
}
}
}
#endregion
//语音通话代码
private void button_voice_Click(object sender, EventArgs e)
{
//打电话 ATD18192531985; +AT+CSCA?
byte[] buf = Encoding.ASCII.GetBytes("ATD18192531985;\r\nAT+CSCA?");
ss_port.Write(buf);
//读取回执
string response = Encoding.ASCII.GetString(ss_port.Read(128));
while (true)
{
//发送AT+CLCC AT+CSCA?判断有没有接通
buf = Encoding.ASCII.GetBytes("AT+CLCC\r\nAT+CSCA?");
ss_port.Write(buf);
response = Encoding.ASCII.GetString(ss_port.Read(128));
if (response.Contains("2,0,0,0,0,"))
{
Thread.Sleep(500);
buf = System.Text.Encoding.Default.GetBytes("AT+QWTTS=1,1,2,\"尊敬的用户你好,欢迎使用TTS功能!即将结束通话,感谢您的聆听!\"\r\nAT+CSCA?");
ss_port.Write(buf);
Thread.Sleep(11 * 1000);
buf = Encoding.ASCII.GetBytes("ATH\r\nAT+CSCA?");//挂机
ss_port.Write(buf);
break;
}
Thread.Sleep(1000);
}
}