This is topic Считывание данных с устройства in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.
Не могли бы помочь мне еще в одном в одном вопросе. написал свой драйвер, считываю данные с устройства. В Пормониторе приходит ответ от устройства с теми данными что я и запрашиваю, то есть чтение происходит корректно. В это время в драйвере вызывается процедура Get и вот тут я уже делаю что-то не верно так как в канал это значение не передается. Канал у меня вообще только один Input, для отладки я просто передаю в Get p[0].F.fmt[1] = 0; p[0].V.v=10; а результат zCompare_xxx = 0; Вот, что собственно не так. Спасибо...
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В первый вызов после Get в zCompare канал сравнивается сам с собой, тут нужно 1 вернуть из zCompare.
Posted by Sigareta (Участник № / Member № 1762) on :
я пробовал уже и 1 вернуть, никаких перемен.. ((
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Остальные параметры тоже задавали? Проверьте, q_rec должен быть = 1, его по идее МРВ заполняет. type_cnv задать в соответствие с нужным алгоритмом разбора блокового запроса = 0 или 2. Должно работать. Если не получится, нужен текст Вашего драйвера, всех функций и не только Get(). Можно прямо здесь его привести - на форуме.
Posted by Sigareta (Участник № / Member № 1762) on :
все спасибо все заработало, выдает на верх )) ну то есть записывается в канал значение. Вот еще один вопрос, что это за поле Кодировка (TW0 по умолчанию стоит там еще) в хелпе про него ничего не нашел, можно о нем подробнее немного
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Код элемента в проекте. В рамках слоя Технология дерева проекта этот атрибут задает код элемента по стандарту технологического кодирования GKS.
Posted by Sigareta (Участник № / Member № 1762) on :
а еще такой вопрос в процедуре Get_xxx count_rec = 18 и в порт мониторе длин на ответа Length = 18 а длина rbuf почему то равна 3 ?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Что значит "длина rbuf"? Входной буфер же нельзя всегда рассматривать как строку, строка в С/С++ это последовательность символов с 0 в конце, если вызвать strlen(rbuf) то функция просто покажет где встретился 0. Если протокол двоичный, там 0 может быть первым символом, или вообще не встречаться ни разу... Длина строки имеет смысл только для некоторых текстовых протоколов в которых 0 - признак конца пакета, а это редкость, обычно указатель конца строки 0x0D и/или 0x0A. У Вас, судя по всему, двоичный протокол, приходит пакет 18 байт, его нужно разбирать, но не как строку!