1. писав этот кусок я и предполагал, что я принимаю 1 байт, но в цикле - т.е. до посинения (или столько, сколько придёт). я же заранее не знаю длину ответа. в принципе, работает похоже. а Concat - чтобы собрать всё полученное сообщение в одну строку (в один буфер), который потом анализировать, что именно это было.
т.е. идея следующая:
а) даём команду прочесть сообщение (пока затычка в виде At&v)
б) получаем сообщение (ответ на At&v)
в) анализируем, что пришло: команда или опрос состояния (до сюда пока не дошли)
г) выполняем и направляем смс с ответом (до сюда тоже)
при этом понимаем, что смс может не дойти, задержаться на сутки в пути и т.д. т.е. применение исключительно бытовое и ни в коем случае не промышленное.
2. по второму замечанию совершенно согласен, завтра вечером опробую. только строковый Concat появился недавно (в каком-то примере подсмотрел), раньше было сделано как раз через побайтное копирование буфера. всё было также. но для чистоты эксперимента завтра обязательно перепроверю.
Попробовал код:
i:=0;
(* функцию STRCOPY не нашёл в библиотеках и компилятор её тоже сам не опознал
STRCOPY(rcvBUFfull,"",1);
пока оставил старый вариант
*)
rcvBUFstr:='';
END_IF
ELSE
(* здесь чуть не так
cr:=SysComRead(com_num,ADR(rcvBUFfull+i),1,0);
если я правильно понял идею...*)
cr:=SysComRead(com_num,ADR(rcvBUFfull)+i,1,0);
IF cr>0 THEN
i:=i+1;
END_IF
END_IF
К сожалению - не изменилось ровным счётом ничего!
Исправленный проект цепляю.