Организовал отправку пакетов AT командами(примеров в интернете куча), все бы хорошо, но вылезает неприятный момент: при отправке вместе с пакетом данных отправлялась фраза "AT+CIPSEND", хотя задержку между чтением/записью в порт организовывал, менял задержки, теперь вместе с пакетами еще выползает кусок пакета, не оборванный, а именно кусок повторный(не более 10 байт). Во вложении что получаю видно.
Код:8: IF queue_size>0 THEN SysComWrite(com_num,ADR(Set_AT_CIPSEND),LEN(Set_AT_CIPSEND),0); master:=90; ELSE master:=102; END_IF 90: IF Wait1.Q THEN ComRead(rcvStr=>rcvStr); result:=1; IF FIND(rcvStr,'>')>0 THEN master:=9; ELSE master:=8; END_IF IF FIND(rcvStr,'ERROR')>0 THEN master:=3; END_IF END_IF 9: WHILE queue_size>0 DO toSend:=QUEUE_POLL(); //выьираем из очереди накопившиеся пакеты SysComWrite(com_num,ADR(toSend),BYTE_TO_INT(toSend[2]),0); END_WHILE IF queue_size=0 THEN master:=100; END_IF 100: SysComWrite(com_num,ADR(Set_26),SIZEOF(Set_26),0); master:=101; 101: IF Wait.Q THEN ComRead(rcvStr=>rcvStr); result:=1; IF FIND(rcvStr,'SEND OK')>0 THEN master:=102; ELSE master:=102; END_IF IF FIND(rcvStr,'CLOSED')>0 OR FIND(rcvStr,'ERROR')>0 THEN Set_AT:='AT+CIPCLOSE$R'; SysComWrite(com_num,ADR(Set_AT),LEN(Set_AT),0); master:=3; END_IF END_IF 102: ComRead(rcvStr=>rcvStr); result:=1; IF queue_size>0 THEN master:=8; END_IF




Ответить с цитированием