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

Тема: Проецирование структуры в буфер и наоборот

  1. #11
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,290

    По умолчанию

    Мдя )) Не любит народ структурки. Тоже самое (практически) :

    STRUCT x
    _ : DWORD;
    Нс,Mn : INT;
    END_STRUCT


    STRUCT Uchet_po_smenam
    Den,Mesiac, God : WORD;
    Dnevnaia,Nochnaia : array [1..5] of x;
    Num : BYTE;
    END_STRUCT

    с указателями возможны периодические сбои.
    Если это происходит на Новый год, то это нормально.
    Ведь смена вероисповедания до добра не доводит ))

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

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    ......
    Если это происходит на Новый год, то это нормально.
    Ведь смена вероисповедания до добра не доводит ))
    Ужене раз писал. что в далеком 2008г. на выставке у стенда КДС имел разговор
    с И. Петровым. В частности разговор касался указателей и Петров крайне не рекомендовал их использовать.
    Без них обойтись очень просто.
    относительно объявления структуры и так понятно.
    только там в дневной и ночной по 5 машин и при написании из массива в массив к структуре обращаясь,
    голову свернешь. у меня нет феноменальной памяти, легко запутаться, т.к. усложняется запись переменных далее по ходу.

  3. #13
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,290

    По умолчанию

    lara197a ! Новый God ! )))

  4. #14

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Ход мысли - правильный. Из помех на пути - невозможность обращения проца к слову по нечетному адресу
    Т.к. DATA байтовый, он может залечь легко и с нечетного адреса и при первом же HDR.CRC := получим ёк.
    Гарантировать лежку DATA с четного адреса можно :

    1.
    Рукотворно после проверки и внедрения, при необходимости, например лишнего типа DATA :array[ -1...127] of byte


    2.
    Изначального расположения DATA в FB или в структуре с явными предварительными выравнивающими байтами типа
    VAR_INPUT
    d : dword;
    b1,b2 : byte;
    DATA : ..[0..127]
    В общем развитие варианта 1.
    Я правильно понимаю, что МК не позволит мне прочитать/записать word/dword с нечетного адреса??? Это для меня откровение, честно говоря.

    Цитата Сообщение от Валенок Посмотреть сообщение
    3.
    Отказа от базового типа DATA как байтового. А нафига байт-то сдался ?
    DATA : array[0..63] of word;
    Мне в общем-то тип буфера не принципиален, в C/C++ я бы указал void*, а тут выбрал BYTE.

    Цитата Сообщение от Валенок Посмотреть сообщение
    4.
    Вообще отказа от промежуточных буферов. А на фига буфера-то нужен ?
    НDR : array[0..??] of TiceHeader; //это и есть буфер. Сюда/отсюда и пишем/читаем, и кузнец нам не нужен
    Структуры располагаются в буфере не последовательно, за каждой из них следуют данные произвольного размера, поэтому делать массив структур не вариант.

    Цитата Сообщение от Валенок Посмотреть сообщение
    5.
    Простого необращения к полям структур в стремных местах
    X : TiceHeader;

    FOR I := 0 TO 5 DO
    HDR := ADR(DATA) + I * SIZEOF(TiceHeader);
    X.CRC := GetCRC16;
    X.Size := 3;
    X.Signature := I;
    HDR^ := X; //тута нет обращений к полям
    END_FOR
    Вот тут смысла не понял, чем копирование структуры отличается от заполнения полей?

    Цитата Сообщение от Валенок Посмотреть сообщение
    6.
    Юзания функций типа SysMemCpy (местного аналога) для переноса абстрактных куч байтов
    Вариант с копированием рассматривал, но это как-то неэкономично в плане ресурсов :-) Привык на атмеге экономить на всем.

  5. #15
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,290

    По умолчанию

    1,2
    Да. Такая особенность. Но не напрягает если знать и соответственно ваять.

    3
    Ну и замечательно

    4
    Значит не подходит. А раз произвольно - то или 5 или 6

    5
    Принципиально. 5 это неявный 6, а 6 - побайтовый

    6
    По сравнению с атмегой - наверное здесь целая вселенная. Да и сэкономленное никому не нужно.

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

Похожие темы

  1. буфер визуализации
    от Иван2 в разделе СПК2хх
    Ответов: 0
    Последнее сообщение: 26.10.2014, 22:05
  2. как организовать буфер (аккум)?
    от K580BB55A в разделе ПЛК1хх
    Ответов: 8
    Последнее сообщение: 23.11.2010, 00:58
  3. как использовать буфер
    от николай72 в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 18.04.2009, 22:25

Метки этой темы

Ваши права

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