FireZone
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору level2003 Цитата: Если да, то что использовал? | win32 API, проблем не знал. Попробовал я щас synaser. Проблема в том, что метод ATCommand весьма негибкий, посмотри его исходник. Таймаутами он реагирует на любые строки, которые не кончаются на 'OK'<CRLF> или 'ERROR'<CRLF>. А ведь телефон кроме этих кодов может еще и +CMS ERROR: <code><CRLF> выдавать. А такая ошибка возникает у тебя, когда ты запрашиваешь с телефона несущесвующую СМС. Рекомендую объявить наследника от TBlockSerial и переопределить в нём метод ATCommand своим более гибким, который сможет распознавать +CMS ERROR и +CME ERROR и даже сохранять код ошибки. Добавлено: У тебя в коде много лишнего. Например, проверка LastError не нужна вовсе, поскольку если оно не ноль, то возбуждается исключение. А последнее условие вообще лишено смысла: Цитата: if (Pos('+CMS ERROR', rec_str) > 0) and (Pos('OK', rec_str) > 0) then break; | . А вообще, ты уверен, что в каждой читаемой ячейке есть сообщение? По-моему, лучше получать список сообщений командой AT+CMGL, а потом по номерам ячеек из списка удалять сообщения. Накидал наследника от TBlockSerial Подробнее... |