Вечер добрый, Уважаемые форумчане. Столкнулся с такой проблемой:
пишу программу для GSM сигнализации, и обнаружил странное поведение...
Код
jdemvizov:
portb.3 = 0 'гасим светодиод
HSERIN 500, nedojdalsya, [WAIT("+CLIP: ", 34,"+380"),STR Sdata\9] 'ждем входящий вызов, и после его получения копируем номер в Sdata[0,1,2.....8]
pause 250
' 50-000-00-00 05-111-11-11
if SData[0] = 53 and SData[1] = 48 and SData[2] = 49 and SData[3] = 49 and SData[4] = 49 and SData[5] = 49 and SData[6] = 49 and SData[7] = 49 and SData[8] = 49 or SData[0] = 53 and SData[1] = 48 and SData[2] = 50 and SData[3] = 50 and SData[4] = 50 and SData[5] = 50 and SData[6] = 50 and SData[7] = 50 and SData[8] = 50 then 'тут сравниваем полученные данные с разрешенными 2-мя номерами
HSerOut ["ATA" ,13]'поднять трубку
pause 250 '3000
else
HSerOut ["ATH0" ,13]'сбросить вызов
pause 250
endif
nedojdalsya:
portb.3 = 1 '
pause 250
return
Когда GSM модуль (SIM900) получает входящий вызов, он методом AT команд выдает в порт следующее: +CLIP: "+380xxxxxxxxx", где ххххххххх - собственно сам номер мобильного телефона.
Затем я эти ххххххххх, которые приходят в ASCII формате копирую в массив Sdata[0,1,2.....8], затем сравниваю с заранее заданными мной значениями номеров телефонов.
Все бы хорошо, если бы не одно НО!!!
Данные после OR в примере 05-111-11-11 обрабатывается нормально. А до OR обрабатываются НЕ ПРАВИЛЬНО!!!
Я даже местами их менял и другие пробовал... Но всё печально...
Почему? Почему до OR глючит, а после OR всё проходит как по маслу???