This is topic Считывание данных с устройства in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/000138.html

Posted by Sigareta (Участник № / Member № 1762) on :
 
Не могли бы помочь мне еще в одном в одном вопросе. написал свой драйвер, считываю данные с устройства. В Пормониторе приходит ответ от устройства с теми данными что я и запрашиваю, то есть чтение происходит корректно. В это время в драйвере вызывается процедура 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 байт, его нужно разбирать, но не как строку! [clever / умный]
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2