访问并使用SIM卡工具包来获得SIM卡平衡

时间:2018-12-17 15:31:42

标签: c# .net at-command sim-toolkit gsmcomm

我正在尝试在使用Sim工具包充值的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为char 13,Ctrlz为char 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);
}

在这里,我保持了所有步骤。

我一直面对的问题是,有时它会工作,有时会抛出错误,因此感觉非常不可靠。就像两个元素已经运行一样,然后当第三个元素尝试运行时,它会抛出错误,指出无法打开端口,或者gsmcommunication错误等。有时所有步骤都可以正常运行。有什么解决办法吗?

我正在使用gsmcomm库。

编辑:我正在winform background_worker内部运行此操作。

0 个答案:

没有答案