)))) Никаких загадок, товарищ. Ключевое слово - "выравнивание"
)))) Никаких загадок, товарищ. Ключевое слово - "выравнивание"
Yegor, а как насчет выравнивания?
Мне кажется, чтобы правильно работала такая конструкция someRealVar := ptrToReal^; размер переменных rcvBuf и someRealVar должен быть кратен 4 байтам. У Вас так или нет?
Опередили
Последний раз редактировалось amn; 03.12.2014 в 23:04.
Поправлю. Не размер, а содержимое в ptrToReal. Обращение к real/dword/ФБ/struct через ^ - только по адресу кратному 4.
Последний раз редактировалось Валенок; 04.12.2014 в 18:46.
Если дело в выравнивании, то почему работает когда я убираю SysComRead?
Забейте. Видимо, адрес указателя в экспериментах зависел от SysComRead. Да, дело в выравнивании. Жесть какая-то. Толку от таких указателей?
Как бы ни было, спасибо.
Последний раз редактировалось Yegor; 04.12.2014 в 06:46.
Приветствую всех! Продолжаю свой проект. Конфигурация прошла успешно. Ну пока всё выглядит именно так. Далее пошла визуальная составляющая. У датчика есть 4 состояния: авария, порог 1, порог 2 и "неработа". Честно для меня не ясно отличия первого и последнего, но не буду упрощать ибо не дано сея право мне Планировалось на небольшой схемке объекта накидать "кружков-пяточков" и завязать состояние датчика с ними, а именно менять цвет. Но у "пяточков" всего два возможных цвета: норм и тревога. Так как тут быть?! Ну я нашёл 2 выхода. Первое объединить порог1 и порог2 как тревожный цвет. Авария и "неработа", как отсутствие заливки. А отсутствие порогов,аварии и "неработы" как нормальная заливка. В переменных, отвечающих за заливку, вместо переменной указать условие.Пример: имеем две переменные состояния А и В,то для заливки имеем "A AND B". Можно ли сделать так? Каков синтаксис? Нужны ли по краям скобки? Какие ограничения? Я записал,компилятор не ругнулся, но как говориться....
Есть второй вариант, с использование изображений, создания пул изображений. Но это всё влечёт лишние переменные(память). Да и "пяточки" такие мелкие,ещё в них картинку пихать!
У кого есть какие варианты решения сей проблемы?
Как я уже упомянул всё это чисто для наглядности. Для подробной информации по датчикам, при нажатии на "пяточки", будет открываться другое окно визуализации, с загрузкой параметров датчика.
А ларчик то проще открывается - вам необходимо не цвет тревоги использовать а цвет заливки. И передавать туда значение соответствующее цвету только в формате c прозрачностью.
Вечером смотрел этот вариант.Будет создаваться переменная DWORD и ей присваиваться значения цвета в ходе ветвления IF. Значения цвета в формате RGB. А именно 16#00RRGGBB. Или конкретно, вот такой цвет "Военно-воздушный синий" есть 16#005D8AA8
Что можно посмотреть по созданию однотипных объектов с их данными? Т.е если будет 100 одинаковых датчиков,чтобы не вбивать всё от руки!
Структуры, массивы и циклы посмотрите в ST;-)
Доброго дня!
Имеется некоторый набор переменных D_1_1, D_1_2, D_1_3, D_1_4, D_1_5, D_1_6 типа WORD. Рассматриваем биты каждой переменной. Например "D_1_1.1" Допустим представляем как массив: D_1:ARRAY[1..6] OF WORD
Теперь как в программе обратиться к элементам через цикл FOR!?
Пробовал напрямую: FOR i:=1 TO 6 DO
IF(D_1[i].0 AND D_1[i].3) THEN
color:=16#66FF00;
END_IF
END_FOR
Компилятор матерился во всю,да и я сам понял что тут не всё так просто.
Согласно справки есть функция "CheckBounds"."Для обеспечения доступа к элементам массива при выполнении программы в приложении должна быть доступна функция CheckBounds." НУ добавил я её, а дальше что делать не пойму! Куда, что !?