Как узнать что ответ на АТ команду модему закончился...тоесть у меня идет в цикле опрос модема на поступления нових символов, если такие есть они записываться в буфер. а в условии выхода из цикла идет функции которая смотрит есть ли признак конца ответа на команду...до этого я делал так все до етого ответы на команды всегда кончались такими вариантами слов:OK, ERROR, NO ANSWER. и были всегда с начала новой строки. в итоге так решил организовать процедуру чтения ответа от модема: Код (Text): FUNCTION STOP_READ(var p:pointer):BOOL; const END_ANSWER_COUNT = 3; END_ANSWER :array[1..END_ANSWER_COUNT] of string =('OK','ERROR','NO ANSWER'); var Telephon:^TTelephon; I,j:byte; s:string; begin Telephon:=p; Result:=false; For I:=1 to Telephon.datatel.RecvCount do if Telephon.datatel.RecvData[i]=#10 then begin s:=copy(Telephon.datatel.RecvData,i+1,Telephon.datatel.RecvCount); s:=Trim(s); For J:=1 to END_ANSWER_COUNT do if s=END_ANSWER[j] then Result:=true; if Result then exit; end; end; procedure read_to_tel(var p:pointer); var Telephon:^TTelephon; ch:string; count:DWORD; begin count:=0; Telephon:=p; Telephon.datatel.RecvData:=''; repeat sleep(100); ch:=#0; ReadFile(Telephon.setting.Htel,ch[1],length(ch),count,nil); if count>0 then begin Telephon.datatel.RecvData:=(Telephon.datatel.RecvData+ch); Telephon.datatel.RecvCount:=LENGTH(Telephon.datatel.RecvData); end; until STOP_READ(p); end; но проблема возникла в том что: встретил я такой из возможних вариантов ответа на команду:+CME ERROR: 3 ...тоесть в случаи если мне такое ответит модем выход из цикла считывания не произойдет...а ответ то мы получили....думал это ответ тож вложить к списку, но что-то мне кажеться что ответов других которые приведут к зацикливанию считывания моей процедуры будет очень много... Теперь вопрос: как можна более точно узнать что нам уже полностью ответил модем ев команду и как можна быстрей что это узнать...есть еще какието более точные варианты кроме как делать просто задержу на 1-2сек перед чтением?