Получите доступ и используйте набор инструментов для сима, чтобы получить баланс сима - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь создать приложение в приложении winform, которое использует sim-инструментарий для пополнения баланса.Следовательно, поэтому мне нужно проверить сим баланс и перенести баланс.Поэтому я проверил шаги и обнаружил, что мне нужно запустить их в командах, чтобы получить сим-баланс.

AT Команды: "AT + STGI = 0 | AT + STGR = 0,1,134 | AT + STGI = 6 |AT + STGR = 6,1,2 | AT + STGI = 3 | AT + STGR = 3,1 + CR + "0000" (Pin) + CtrlZ "

Здесь мне нужно запустить эти команды одинза другим.CR - это символ 13, Ctrlz - это символ 26.

Мой код:

try
{
   comm.Open();
   comm.MessageReceived += new MessageReceivedEventHandler(comm_MessageReceived1);
   IProtocol protocol = comm.GetProtocol();
   for (int j = 0; j < BalanceStringArray.Length; j++)
   {
      if (comm.IsConnected())
      {
           if (BalanceStringArray[j].Contains("PIN"))
           {
                BalanceStringArray[j] = BalanceStringArray[j].Replace("PIN", textBoxPin1.Text);
           }

           string gottenString = protocol.ExecAndReceiveMultiple(BalanceStringArray[j]);
           result = gottenString;
           int i = 0;
           if (!gottenString.Contains("\r\n+CUSD: 2"))
           {
               bool receiving = false;
               do
               {
                  receiving = protocol.Receive(out gottenString);
                  result += gottenString;
                  ++i;
                } while (receiving);
            }
       }
   }

Thread.Sleep(2000);
worker.ReportProgress(1, "Searching SMS Inbox for Balance SMS");
DecodedShortMessage messages = comm.ReadMessage(messageIndex1, "SM");

comm.ReleaseProtocol();
comm.Close();
}
catch (Exception ex)
{
    worker.ReportProgress(1, "Error: " + ex.Message);
}

Здесь, в BalanceStringArray, я сохранил все шаги.

Проблема, с которой я столкнулся,что он чувствует себя очень ненадежным, так как иногда он работает, иногда просто выдает ошибку.Подобно тому, как два элемента запустились, затем при попытке запустить третий элемент выдается ошибка, говорящая о том, что порт не может быть открыт, или ошибка gsmcommunication и т. Д. Иногда все шаги работают идеально.Любое решение для этого?

Я использую библиотеку gsmcomm.

Редактировать: я выполняю эту операцию внутри winform background_worker.

...