Привет всем! Столкнулся с такой проблемой. Делаю 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
|
Это сообщение отредактировал(а) Actionman - 4.12.2011, 19:43
|