Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Bascom-GSM-M10


Автор: Actionman 4.12.2011, 19:39
Привет всем! Столкнулся с такой проблемой. Делаю GSM  контроллер, вроде бы все отлично, все работает, ....да не все. Посылаю смс с командой, отвечает нормально. При посылке неправильно написанной команды устройство виснет. Вводил в цикл  сравнения команд ( select- case -case else) case else конструкцию, то при получении любого смс, контроллер  посылал мне сообщение о неправильной команде. 

Код

 Select Case Command_rx

            Case "cmd1"
            Incr K1
            If K1 = 1 Then
             Set Relay1
             Relay1_status = "Relay1-on"
            Elseif K1 = 2 Then
             Reset Relay1
             Relay1_status = "Relay1-off"
             K1 = 0
            End If
             Command_tx(1) = Relay1_status
             Command_tx(2) = Relay2_status
             Command_tx(3) = Relay3_status
             Command_tx(4) = Relay4_status
             Call Delete_sms
               Call Send_sms


            Case "cmd2"
            Incr K2
            If K2 = 1 Then
             Set Relay2
             Relay2_status = "Relay2-on"
            Elseif K2 = 2 Then
             Reset Relay2
             Relay2_status = "Relay2-off"
             K2 = 0
            End If
             Command_tx(1) = Relay1_status
             Command_tx(2) = Relay2_status
             Command_tx(3) = Relay3_status
             Command_tx(4) = Relay4_status
             Call Delete_sms
               Call Send_sms


            Case "cmd3"
            Incr K3
            If K3 = 1 Then
             Set Relay3
             Relay3_status = "Relay3-on"
            Elseif K3 = 2 Then
             Reset Relay3
             Relay3_status = "Relay3-off"
             K3 = 0
            End If
             Command_tx(1) = Relay1_status
             Command_tx(2) = Relay2_status
             Command_tx(3) = Relay3_status
             Command_tx(4) = Relay4_status
             Call Delete_sms
               Call Send_sms


            Case "cmd4"
            Incr K4
            If K4 = 1 Then
             Set Relay4
             Relay4_status = "Relay4-on"
            Elseif K4 = 2 Then
             Reset Relay4
             Relay4_status = "Relay4-off"
             K4 = 0
            End If
             Command_tx(1) = Relay1_status
             Command_tx(2) = Relay2_status
             Command_tx(3) = Relay3_status
             Command_tx(4) = Relay4_status
             Call Delete_sms
               Call Send_sms


            Case "status"
             Command_tx(1) = Relay1_status
             Command_tx(2) = Relay2_status
             Command_tx(3) = Relay3_status
             Command_tx(4) = Relay4_status
             Call Delete_sms
                Call Send_sms


            Case "adc"
            Call Delete_sms
             Call Get_adc
               Call Send_sms


            Case "balans"
             Call Delete_sms
              Call Get_balans


             Case "temp1"
              Call Delete_sms
               Call Get_temper
                Command_tx(1) = Temperatura
                 Call Send_sms

----------------------------------------------------------------------
            Case Else
              Call Delete_sms
               Command_tx(1) = "ERROR COMMAND!"   
                 Call Send_sms
 ' в данном месте и происходит тот самый косяк! хотя вроде строка содержащая
 команду не содержит левых символов, я пробывал и обрезать и 
цикл if-then -else, все в бестолку

----------------------------------------------------------------------
                 


           End Select




процедура приема строки уарт как и различных примерах:
Код

Sub Getline
Command_rx = ""
Do
    J = Inkey()
    Select Case J
       Case 0
       Case 13
       Case 10 : If Command_rx <> "" Then Exit Do           'ЖДЕМ СИМВОЛ
       Case Else
       Command_rx = Command_rx + Chr(j)                     ' СОСТАВИМ СТРОКУ
    End Select
Loop
End Sub

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)