예제 #1
0
 /// <summary>
 /// Совершить звонок
 /// </summary>
 /// <param name="number">Номер для звонка</param>
 /// <returns></returns>
 public bool CallTo(string number)
 {
     try
     {
         IProtocol protocol     = GetProtocol();
         string    gottenString = protocol.ExecAndReceiveMultiple("ATD" + number + ";");
         int       i            = 0;
         do
         {
             string temp;
             protocol.Receive(out temp);
             gottenString += temp;
             ++i;
             Thread.Sleep(300);
         } while (!(i >= 5 || gottenString.Contains("OK")));
         if (gottenString.Contains("OK"))
         {
             return(true);
         }
         else if (gottenString.Contains("ERROR"))//||gottenString.Contains("CARRIER"))
         {
             return(false);
         }
         return(true); // или true
     }
     catch (Exception ex)
     {
         ErrorLog.LogError(ex);
         return(false);
     }
     finally
     {
         ReleaseProtocol();
     }
 }
예제 #2
0
 /// <summary>
 /// Получить баланс на Билайне
 /// </summary>
 public void GetBalanceBeeline()
 {
     lock (this)
     {
         try
         {
             IProtocol protocol     = GetProtocol();
             string    gottenString = protocol.ExecAndReceiveMultiple("at+cusd=1,#102#,15");
             string    resp         = string.Empty;
             int       i            = 0;
             if (string.IsNullOrEmpty(resp))
             {
                 do
                 {
                     string temp;
                     protocol.Receive(out temp);
                     gottenString += temp;
                     ++i;
                 } while (!(i >= 8 || gottenString.Contains("+CUSD")));
             }
             if (gottenString.Contains("Vash balans") && !gottenString.Contains("aktiviruyetsya"))
             {
                 int Pos1 = gottenString.IndexOf("Vash balans") + ("Vash balans").Length;
                 int Pos2 = gottenString.IndexOf(" r");
                 System.Diagnostics.Debug.WriteLine(gottenString);
                 System.Diagnostics.Debug.WriteLine(Pos1 + " " + Pos2);
                 string temp = gottenString.Substring(Pos1, Pos2 - Pos1).Trim();
                 temp    = temp.Replace('.', ',');
                 Balance = decimal.Parse(temp);
             }
             else
             {
                 //ERROR
             }
         }
         catch (Exception ex)
         {
             ErrorLog.LogError(ex);
         }
         finally
         {
             ReleaseProtocol();
         }
     }
 }
예제 #3
0
        public string RejectIncomingCall()
        {
            var result = "";

            try
            {
                IProtocol protocol     = modemService.comm.GetProtocol();
                string    gottenString = protocol.ExecAndReceiveMultiple("AT+CVHU=1");
            }
            catch (Exception ex)
            {
                result = null;
            }
            finally
            {
                modemService.comm.ReleaseProtocol();
            }
            return(result);
        }
예제 #4
0
        /// <summary>
        /// Отправлляет USSD запрос (в одну сторону)
        /// </summary>
        /// <param name="query">Запрос</param>
        public bool SendUSSD(string query)
        {
            if (query.StartsWith("*"))
            {
                StringBuilder sb = new StringBuilder(query);
                sb[query.IndexOf('*')] = '#';
                query = sb.ToString();
            }
            try
            {
                IProtocol protocol     = GetProtocol();
                string    gottenString = protocol.ExecAndReceiveMultiple("at+cusd=1," + query + ",15");
                int       i            = 0;
                do
                {
                    Thread.Sleep(300);
                    string temp;
                    protocol.Receive(out temp);
                    gottenString += temp;
                    ++i;
                } while (!(i >= 8 || gottenString.Contains("+CUSD")));

                if (gottenString.Contains("OK") || gottenString.Contains("+CUSD: 2"))
                {
                    return(true);
                }
                else if (gottenString.Contains("ERROR") || gottenString.Contains("+CUSD: 4"))
                {
                    return(false);
                }

                return(false); // или true
            }
            catch (Exception ex)
            {
                ErrorLog.LogError(ex);
                return(false);
            }
            finally
            {
                ReleaseProtocol();
            }
        }
예제 #5
0
        public string SendUssdRequest(string request)
        {
            string data         = TextDataConverter.StringTo7Bit(request);
            string result       = null;
            var    asPDUencoded = Calc.IntToHex(TextDataConverter.SeptetsToOctetsInt(data));

            try
            {
                IProtocol protocol     = modemService.comm.GetProtocol();
                string    gottenString = protocol.ExecAndReceiveMultiple("AT+CUSD=1," + asPDUencoded + ",15");
                var       re           = new Regex("\".*?\"");
                int       i            = 0;
                if (!re.IsMatch(gottenString))
                {
                    do
                    {
                        protocol.Receive(out gottenString);
                        ++i;
                    } while (!(i >= 5 ||
                               re.IsMatch(gottenString) ||
                               gottenString.Contains("\r\nOK") ||
                               gottenString.Contains("\r\nERROR") ||
                               gottenString.Contains("\r\nDONE")));     //additional tests "just in case"
                }
                string m = re.Match(gottenString).Value.Trim('"');
                result = PduParts.Decode7BitText(Calc.HexToInt(m));
            }
            catch (Exception ex) {
                result = null;
            }
            finally
            {
                modemService.comm.ReleaseProtocol();
            }
            return(result);
        }