C# GSM短信猫语音通话

 JustinIO.CommPort ss_port = new JustinIO.CommPort();
 /// <summary>
        /// 初始化串口方法
        /// </summary>
        /// <param name="m_port"></param>
        /// <param name="m_baudrate"></param>
        /// <returns></returns>
        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)
        {
            //打电话 ATD18192xxxxx; +AT+CSCA?
            byte[] buf = Encoding.ASCII.GetBytes("ATD18192xxxxx;\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);
            }        
        }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值