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