/// <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(); } }
/// <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(); } } }
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); }
/// <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(); } }
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); }