我正在尝试在使用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内部运行此操作。