Всем доброго времени суток.
Вопрос не один. Постараюсь задать последовательно.
На форуме очень много знатоков по работе с USART. Подход к SIM80l взял с чужой программы еще 3 года назад. Использую как кирпичики. Заметил многие это делают до сих пор.
'подпрограмма для разбора сообщения модуля
'=============================================================================
Sub Getline(s As String)
S = ""
Do
Buf = Inkey() 'берем символ из буфера в формате ASCII
Select Case Buf
' Case 0 : S = ""
' Case 13 : S = ""
Case 10 : If S <> "" Then Exit Do 'конец строки, значит выходит из подпрограммы
Case Else : If Buf > 31 Then S = S + Chr(buf) 'печатаемые символы начинаются с кода 32 по таблице АСКИ, из них составляем строку
End Select
Loop
End Sub
'=========очистка буфера====================================================================
Sub Flushbuf()
Waitms 100
Do
Buf = Inkey() 'забираем все из буфера
Loop Until Buf = 0
End SubСуть первого вопроса.
Запрос баланса по USSD.
'узнаем баланс
'=================================================================================
Balanse:
Print "AT+CUSD=1,{034}*105#{034}"
Wait 1
Getline Sk
Getline Sk
Getline Sk
Getline Sk
Getline Sk
Waitms 100
Gosub Баланс
' Otvet = Sk
' Print "Sk " ; Sk
' Wait 1
' Gosub Sendsms
Flushbuf
ReturnЭто оператор ТЕЛЕ2. С МТС немного проще. Если задать "#100#", ответ придет на транслит. Передать его обратно нет труда. Но в данном случае ответ приходит в кодировке ACS2.
Простой подход дает результаты, но не стабильно. Иногда промахивается с началом цифровых символов.
'========Баланс==================================================================================
Баланс:
Bred = Mid(sk , 12 , 128)
Sim = 1
Otvet = ""
For Bal = 0 To 32
Sim_str = Mid(bred , Sim , 4)
Select Case Sim_str
Case "0030" : Cifra = "0"
Case "0031" : Cifra = "1"
Case "0032" : Cifra = "2"
Case "0033" : Cifra = "3"
Case "0034" : Cifra = "4"
Case "0035" : Cifra = "5"
Case "0036" : Cifra = "6"
Case "0037" : Cifra = "7"
Case "0038" : Cifra = "8"
Case "0039" : Cifra = "9"
Case "002E" : Cifra = "."
Case "002C" : Cifra = "."
End Select
Otvet = Otvet + Cifra
Sim = Sim + 4
Cifra = ""
Next Bal
Otvet = "Balans:" + Otvet
Gosub Sendsms
ReturnПодскажите. Как привязаться именно к цифровым символам? Или лучше. Начать брать символы после".

