Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 17 из 17

Тема: ПРИМЕНЕНИЕ ADR

  1. #11

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Вы не различаете разницу, что такое адрес области памяти ОЗУ, где расположена переменная и что такое содержимое переменной?
    Различаю конечно. Я просто не могу понять для чего нам знать ее адрес, если мы просто может записать в нее другое значение или прочитать его..

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

    По умолчанию

    так если нет переменной, она обезличена входом ПОУ, сами же приводите код с использованием циклов, не будете же писать на десять переменных десять индивидуальных функциональны блоков для обработки. Тоже самое касается преобразований из одного типа в другой, компилятор будет ругаться если переменной одного типа, будете присваивать значение другого типа, а с указателями можно всё что угодно. Этой информации полно в инете, ликбез здесь не уместен, Вам уже писали что нет понимания что такое указатели, не стоит с ними и связываться.
    Из порта Вы будете получать не строку, а массив байт из них сразу получить число намного легче, чем Ваши потуги в преобразовании строк, которые здесь вообще не нужны. Dword с маской 16#FFFF и два байтовых сравнения сделают "чудеса"
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  3. #13

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    так если нет переменной, она обезличена входом ПОУ, сами же приводите код с использованием циклов, не будете же писать на десять переменных десять индивидуальных функциональны блоков для обработки. Тоже самое касается преобразований из одного типа в другой, компилятор будет ругаться если переменной одного типа, будете присваивать значение другого типа, а с указателями можно всё что угодно. Этой информации полно в инете, ликбез здесь не уместен, Вам уже писали что нет понимания что такое указатели, не стоит с ними и связываться.
    Из порта Вы будете получать не строку, а массив байт из них сразу получить число намного легче, чем Ваши потуги в преобразовании строк, которые здесь вообще не нужны. Dword с маской 16#FFFF и два байтовых сравнения сделают "чудеса"
    Как пример: такой алгоритм будет верно работать для моего случая? или нужно создавать массив с большим количеством элементов?
    Маскирование изучал в университете, но по прошествии 10 лет уже сложно вспомнить...можете на примере показать как преобразовать число из одной системы в другую путем маскирования?
    VAR
    ARR:ARRAY[1..3] OF WORD;
    ARR_VALUE:ARRAY[1..3] OF WORD := 16#FFFF, 16#752A, 16#4B9C;
    I:WORD;
    STAGE:WORD;
    VALUE:WORD;
    END_VAR

    ARR := ARR_VALUE;
    IF I < 3 THEN
    I := I +1;
    IF ARR[ I ] = 16#FFFF THEN
    VALUE := ARR[ I +1];
    END_IF
    ELSE
    I := 0;
    END_IF

  4. #14

    По умолчанию

    Цитата Сообщение от deniska13 Посмотреть сообщение
    Как пример: такой алгоритм будет верно работать для моего случая? или нужно создавать массив с большим количеством элементов?
    Маскирование изучал в университете, но по прошествии 10 лет уже сложно вспомнить...можете на примере показать как преобразовать число из одной системы в другую путем маскирования?
    VAR
    ARR:ARRAY[1..3] OF WORD;
    ARR_VALUE:ARRAY[1..3] OF WORD := 16#FFFF, 16#752A, 16#4B9C;
    I:WORD;
    STAGE:WORD;
    VALUE:WORD;
    END_VAR

    ARR := ARR_VALUE;
    IF I < 3 THEN
    I := I +1;
    IF ARR[ I ] = 16#FFFF THEN
    VALUE := ARR[ I +1];
    END_IF
    ELSE
    I := 0;
    END_IF
    А если просто так написать:
    VALUE := ARR[3];
    Это не одно и тоже будет?
    нужное мне значение может быть смещено из-за помех в виде "эхо" и поэтому может не всегда записаться в 3 элемент массива?

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

    По умолчанию

    вообще не то

    исходные данные, прием из порта массива байт: FF FF 75 2A 4B 9C
    указатели на байт, на двойное слово
    Result:POINTER TO BYTE;
    ptByte:POINTER TO BYTE;
    ptDWord:POINTER TO DWORD;
    value: WORD;
    получаем данные из порта
    SysComRead(0,ADR(Result),255,0)>0
    в теле условия
    ptByte:=Result;
    и далее ищем начало посылки пока не выполнится условие
    ptByte^:=16#FF и ptByte:=ptByte+1;ptByte^:=16#FF
    если совпадение найдено
    ptDWord:=Result;
    можно смело отправлять в визуализацию результат
    value:=DWORD_TO_WORD(ptDWord^ AND 16#FFFF);
    Последний раз редактировалось capzap; 14.04.2017 в 13:19.
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  6. #16

    По умолчанию

    Пример сортировки массива, что вы привели работает лишь с массивом в 20 элементов. А если надо будет из 21 элементов? Копировать код?

    a_char:=ADR(rcvBuf[iter]); (*записываем в a_char адрес ячейки массива с индексом iter*) -> а если напишем a_char:=(rcvBuf[iter]); что изменится?

    Всё изменится. В одном из случаев компилятор выдаст ошибку, потому что не поймет, отчего вы в указатель хотите значение кинуть. Пока не поймёте, не используйте указатели. Могут возникнуть сложно уловимые ошибки, если с ними неправильно обращаться.

  7. #17

    По умолчанию

    Цитата Сообщение от slonegd Посмотреть сообщение
    Пример сортировки массива, что вы привели работает лишь с массивом в 20 элементов. А если надо будет из 21 элементов? Копировать код?

    a_char:=ADR(rcvBuf[iter]); (*записываем в a_char адрес ячейки массива с индексом iter*) -> а если напишем a_char:=(rcvBuf[iter]); что изменится?

    Всё изменится. В одном из случаев компилятор выдаст ошибку, потому что не поймет, отчего вы в указатель хотите значение кинуть. Пока не поймёте, не используйте указатели. Могут возникнуть сложно уловимые ошибки, если с ними неправильно обращаться.
    Да я знаю, что работает только для 20 элементов, можно сделать и больше, это не сложно, я просто выложил код, который сортирует массив.

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Применение OPC-сервера CoDeSys
    от Спорягин Кирилл в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 15.06.2016, 19:25
  2. применение указателей
    от Дмитрий Артюховский в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 09.02.2016, 18:07
  3. Применение БКК1-220
    от HeeP в разделе Подбор Оборудования
    Ответов: 6
    Последнее сообщение: 05.04.2012, 11:52
  4. нестандартное применение буст
    от Sniper007 в разделе Подбор Оборудования
    Ответов: 13
    Последнее сообщение: 01.12.2009, 09:16
  5. применение ас3
    от Григорий Ф в разделе Сетевые технологии
    Ответов: 2
    Последнее сообщение: 08.05.2009, 11:56

Ваши права

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