Ну я ж просто упростить код со стороны ПЛК предложил, если съём < 251 байт за раз. И раз уж все равно TCP, думаю что то же самое со временем и через syslibsocket
Ну я ж просто упростить код со стороны ПЛК предложил, если съём < 251 байт за раз. И раз уж все равно TCP, думаю что то же самое со временем и через syslibsocket
Последний раз редактировалось Валенок; 10.12.2013 в 21:28.
У меня уж мусора нет и с развалом пакетов разобрался, и не развал был.
Эта мая первая такая работа с плк, невнимательно делаю видимо.
Но этот клей как-то зараза достал. Всего-то осталось е-мое.
Вот еще какая мысля есть может посоветуете че.
Работа со строками, тут понял что искать клеить и.т.д операции со строками полное фуфло если она больше 255.
Увидел это тока когда веб сервер собирал, хотя потом в хелпе нашел.
А как правильно та с длинными работать, в ОЗУ?
Далее
Вот этот кусок
IF Buff_Send <> '' THEN
Size_Send:=SysSockSend(hSocket, ADR(Buff_Send), LEN(Buff_Send)+1, 0 );
Buff_Send:=''; !!!! Вот это я затираю строку, и длину хочу 0 – это я правильно делаю?
Может тут какая зараза сидит.
Может задержка нужна Buff_Send:=''; ? Может там что-то друг на дружку лезет?
Дело в том что я собирал веб сервер, первый ответ длинны№1 далее идет POST для запроса пароля, он чуть меньше
Чем №1 я там то же выполняю Buff_Send:=''; он его затирает, но когда приходит POST с паролем и логином а он заведомо
Меньше в весь прием = длинны №1 и мне сам пасворд в конце не отловить, т.к в следующим за ним мусоре может быть тег password.
Может я через жоу со строками? Не подскажите как массив из char сотворить, тут вроде char нет но как-то же вы с этим боретесь?
Вот в оскатовских бибка видел, там можно типа че - не нужное порезать, но не пробовал. Т.к не пойму почему они у меня
Ругались-ругались, а потом перестали и все три штуки прикрутились, пока че-то не совсем доверяю.
Ну и еще вопросик : плк, если не че не шлет клиенту раз в 7 секунд то рвет связь – это нормально или косяк искать?
Если хотите длиннющую строку, не делайте её из строки, а из массива байт, тем более указатель указывает на первый байт чего угодно
Если сами принимаемые/отправляемые строки меньше 255, т.е. интервал между нулями всегда меньше 256, то для нарезки из длиннющего склеенного буфера хватит и стандарта с syslibmemом
Увлечение сислибмемом иногда приводит к глюкам проекта, но тут не это главное, зачем в плк посты слать,достаточно гета, изначально послали все вместе и логин и пароль и плк либо ответит либо страничку с фигой откроет
Глюков с сислибмемом пока не обнаруживал. Исключение - sysmemalloc, когда с ним до середины Днепра ...
А тут сообсно только sysmemmove и нужно. С ней нереально глюкнуть.
Ну код с последовательным выделением из буфера за мин.цикл до одной строки (<255), а приемом склейки любой длины (в рамках буфера ессно) займет примерно столько же букв сколько в этом предложении.
А на плк syssockrecv присылает только строго -1 или >1 ?
А гет - это что ?
Последний раз редактировалось Валенок; 10.12.2013 в 23:26.
А какая разница /GET или /POST все одно просто пост в строке браузер не виден, а так…все вроде одинаково
Вроде так.
С сокетом разобрался остался только клей победить , Всем спасибо.
Да наверное так и буду, че то не хочется во всякий там mem лезть.делайте её из строки, а из массива байт
Я, еще не очень понимаю ресурс памяти плк,
как я понял под массивы выделено 65кб, а в эти 65 кб еще какие переменные входят?
Я, прикинул, что если пакеты не будут успевать улитеть, сделать буфер круговой в 100 строк по 255 байт.
это уже скушает половину. У меня в плк отменен АКБ как факт, ретайны просто пишутся в файл,
(инструкции очень-очень редко) при загрузки этот файлик пишу в массив – тут тож 3-5кб скушает.
Веб сервер, вроде простенький но не хотса его в файлах хранить, это еще 3-5кб.
Тут так потихоньку, и полны карманы будут.
Не могу понять 65кб, это на все POU и FB или в каждом можно использовать по 65кб?, тут бы я успокоился.
А сколько максимум в массивах можно использовать?
При компиляции пишет использовано данных 1000 из 131072 байт. Это-то что? Добавляю в проект
Строковую переменную, компилирую, как была 1000 так и осталась?
А не кто не побывал Broadcast кидать в рутер и ловить с него чего полезного?
Слушайте, с такими запросамиВы бы комп использовали под веб-сервер,меньше гемора
А по поводу объема данных,есть же пример,где страницы хранятся в виде файлов и если что то нужно отправить клиенту,подгружается только то что нужно в фиксированный по размеру буффер
Чтоб при запрлсах гет ни чего небыло видно в строке,пользуйтесь аяксом
Был бы нужен комп – взял бы комп.
А запросов-то тут всего ничего.
Создал 7 POU d в каждом дает по 64к забрать. Главное чтоб в этом геморроя какого не оказалось!?
За аякс спасибо, че-то меня пугало изначально, но терь нет.
Создал 7 POU d в каждом дает по 64к забрать. Главное чтоб в этом геморроя какого не оказалось!?
Это я тут начудил. 7*64к ни как нормально не лезит - 131к max. (в офлайне красота, хоть теробайт заберай )
Ну зато понял, че откудо выделяется