Показано с 1 по 10 из 10

Тема: применение указателей

  1. #1

    По умолчанию применение указателей

    В глобальных переменных объявлен байтовый массив. Объявлено несколько указателей, так же глобально. При старте программы им присваивается адреса элементов массива. Пока указателей было 3 - все работало, когда добавил еще пяток - ПЛК стал перезагружаться по ватчдогу. К моменту перезагрузки запись по указателям еще не производилась.

    Че бы так?


    BUF: array[0..511] of byte;

    P_COUNT: pointer to dint;

    ......

    p_count := ADR( buf[ 100] );

  2. #2
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Если сделать не через указатель, а к примеру [N]
    и присваивать через номер в массиве, то все работает и проще пишется-читается.
    Например:
    Out_arx_D1:=ARX[N];
    Out_arx_D2:=ARX[N];
    Out_arx_D3:=ARX[N];

  3. #3

    По умолчанию

    да понятно что работает, идея кода с указателями в том, что есть куча переменных, которые нужно периодически сбрасывать в сокет, для этого их приходится вписывать в буфер, ну а если хранить переменный в этом самом куске памяти - зарезервированного под буфер, то экономится прилично процессорного времени

  4. #4
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

    ну а вдруг дело в использовании знакового типа данны, так то везде используют dword
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #5
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    ну а вдруг дело в использовании знакового типа данны, так то везде используют dword
    Соглашусь, обычно указывают размер, а не тип.
    И хотел бы заметить, что в свое время имел разговор по поводу указателей с уважаемым И.Петровым.
    Он крайне не рекомендовал использовать указатели и по возможности в программах обходиться без них. Почему- тема долгая, но вот как-то так.

  6. #6
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    ПЛК стал перезагружаться по ватчдогу.
    Доступ по некратному адресу. Если вы пытаетесь разыменовать указатель на DINT, то адрес под указателем должен быть кратным четырём, иначе собака. На ПЛК Овен поперёк выравнивания не попрёшь. Буферы для передачи и приёма через сеть собирайте функциями библиотеки SysLibMem. Я предыдущий свой пост писал в такую же тему.
    Последний раз редактировалось Yegor; 18.04.2015 в 11:54.

  7. #7

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Доступ по некратному адресу. Если вы пытаетесь разыменовать указатель на DINT, то адрес под указателем должен быть кратным четырём, иначе собака. На ПЛК Овен поперёк выравнивания не попрёшь. Буферы для передачи и приёма через сеть собирайте функциями библиотеки SysLibMem. Я предыдущий свой пост писал в такую же тему.
    да, причина в этом, СПАСИБО!

  8. #8
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Что-то я затупил. Не могу через указатель в байтовую переменную записать структуру 8 бит.
    Shot1.png
    Правильно пишется только первый бит, остальные нули.

  9. #9
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Потому что структура у вас не 8 бит, а 8 байт — булевые переменные занимают каждая целый байт и не уплотняются в биты сами по себе.

  10. #10
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Вот облом. Спасибо Егор.

Похожие темы

  1. Использование указателей Pointer
    от Андрей Плеханов в разделе ПЛК3хх
    Ответов: 23
    Последнее сообщение: 24.07.2014, 21:58
  2. Применение БКК1-220
    от HeeP в разделе Подбор Оборудования
    Ответов: 6
    Последнее сообщение: 05.04.2012, 11:52
  3. нестандартное применение буст
    от Sniper007 в разделе Подбор Оборудования
    Ответов: 13
    Последнее сообщение: 01.12.2009, 09:16
  4. применение ас3
    от Григорий Ф в разделе Сетевые технологии
    Ответов: 2
    Последнее сообщение: 08.05.2009, 11:56
  5. Получение списка/указателей на ФБ проекта
    от Аркадий в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 05.03.2008, 18:22

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •