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

Тема: как записать в память

  1. #1
    Пользователь
    Регистрация
    29.10.2008
    Адрес
    Минск
    Сообщений
    63

    По умолчанию как записать в память

    Добрый день,
    вопрос такой:
    есть переменная типа Word содержащая адрес в памяти.
    как мне записать значение по этому адресу?
    бьюсь без толку, непонятно как в кодесисе вот так обратиться к памяти

  2. #2

    По умолчанию

    a:word;
    x: pointer to word;
    x:=ADR(a);
    x^:=22;
    Последний раз редактировалось Малышев Олег; 02.12.2008 в 14:27.

  3. #3
    Пользователь
    Регистрация
    29.10.2008
    Адрес
    Минск
    Сообщений
    63

    По умолчанию

    Цитата Сообщение от Малышев Олег Посмотреть сообщение
    a:word;
    xointer to word;
    x:=ADR(a);
    x^:=22;
    тут указатель х имеет адрес переменной а, и значение записывается по адресу а.

    это не то
    надо чтобы значение записалось по адресу, находящемуся в переменной а.

  4. #4

    По умолчанию

    a: DWORD:=16#0; (* Убиваем вектора прерываний*)
    x: pointer to BYTE;
    x:=a;
    x^:=0; (* Убили!*)
    Последний раз редактировалось Малышев Олег; 02.12.2008 в 14:28.

  5. #5
    Пользователь
    Регистрация
    29.10.2008
    Адрес
    Минск
    Сообщений
    63

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    А вот и нет. Только вектор загрузки, а он не нужен.
    Попытка №2?
    Владислав, подскажите пожалуйста, я этот вопрос обошел другим путем, но все же вопрос остается открытым.
    Последний раз редактировалось Anton_Minsk; 28.11.2008 в 12:43.

  6. #6

    По умолчанию

    Какой вопрос?
    Запись по адресу? Записываете в указатель адрес и вперёд.
    А, если не секрет, зачем?

  7. #7
    Пользователь
    Регистрация
    29.10.2008
    Адрес
    Минск
    Сообщений
    63

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Какой вопрос?
    Запись по адресу? Записываете в указатель адрес и вперёд.
    Невольно вспомнилось: впрос, как положить слона в холодильник?
    1. открыть холодильник
    2. положить слона в холодильник
    3. закрыть холодильник

    мне нужен синтаксис операции для кодесиса, как это делается в других языках я знаю, вот в чем загвоздка.
    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    А, если не секрет, зачем?
    Это нужно для автоматического выключения датчиков с МВА8 протокол Овен
    допустим идет обрыв датчика, я беру значения код ошибки и адрес ошибки. по адресу я автоматически записываю нужное мне значение в переменную датчика.
    я эту проблему решил, но решил ее не самым оптимальным вариантом, хотелось бы узнать как это сделать правильно, спасибо

  8. #8

    По умолчанию

    1) Давайте разберемся, что Вы имеете ввиду, говоря адрес.
    Если это адрес IEC 61131 вида %Q... или %I то к обычным адресам эти адреса не имеют никого отношения.
    2) Чтобы записать по адресу переменной нужно узнать этот адрес. Обычно это делается операцией ADR(). Иногда нужно добавить к адресу некое смещение. Это смещение нужно рассчитывать как DWORD переменную или константу тогда получается - x : POINTER to WORD ; x:=adr(error); x:=x+DWORD#4; x^:=WORD#3;
    3) ИМХО, не стоит работать так с областью ввода и ввода. В принципе, работа с указателями - зло, и цена ошибки в случае с областью ввода-вывода выше чем с обычными переменными.
    Последний раз редактировалось Малышев Олег; 02.12.2008 в 14:22.

Ваши права

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