Насколько я помню, вроде плк 160, открывает с 11 дескриптора и до 16. Как тут тогда быть?
Вид для печати
Беда, конечно, что каждый ПЛК ведет себя по-разному, а под рукой нет другого, чтобы проверить...
Замечание ваше справедливо, себя не оправдываю, действительно мало опыта. Цель всех моих вопрос понять, где мои ошибки, а где поведение ПЛК.
Почему сокет открывается со 2-го десткриптора разобрался, но вот почему сокет читается "через раз" с дескриптором 1 так и не понял.
Программу то приведите, чего мы тут гадаем. На ПЛК100 мы даже WEB-сервер делали многопользовательский с визуализацией и графиками. Так что сокеты рабочие, но есть нюансы.
Вот, собственно, ФБ и пару функций, которыми пользуюсь, ФБ многим знаком, из оскатовской библиотеки.
Вложение 20344
Эммм... что то у вас с переходом из step:=0;в step:=1; зачем прыгать туда-сюда из цикла в цикл? Принимайте (то есть будте в step:=1) пока не примите или не выйдет таймаут. Ну и с передачей собственно так же )
и все таки: передаем - передали? да - принимаем - приняли? да - передаем. инициатором обмена должен быть клиент. сервак "слушает и отвечает" (это я к тому что "оставил в цикле только чтение" )
попробуйте вместо TcpReceiveData result:= SysSockRecv( diSocket, ADR(byBuffer[0]), 100,0);
у вас "сервак" шлет данные с какой периодичностью? может сервак передает а сокет закрылся по ready и(или) errcheck?
Сервер не отвечает на посылки, пока такой алгоритм, НО я могу с сервера в произвольный момент времени отправить данные, на которые должен отреагировать клиент, если они не доходят с первого раза, то придется "долбить" клиента, чего не совсем хочется.
И еще, пока я буду ждать от сервера ответа(который может и не придти), как в нынешней ситуации, то у меня сокет по таймауту закрывается, безысходность какая-то...