Получите доступ и используйте набор инструментов для сима, чтобы получить баланс сима

Я пытаюсь создать приложение в приложении 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.

0 ответов

Другие вопросы по тегам