ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
180988 Топик полностью
Vladimir Ljaschko (11.02.2010 11:30, просмотров: 155) ответил koyodza на ещё вопрос: как лучше сделать таблицу ссылок на данные?
Мысль одна - данные должны записываться в нативном виде, только не для процессора, а для человека. Одна из структур, которые могут быть прочитаны по интерфейсу, описывается вот так, в отдельном файле: STATISTIC_MACRO ( long, pump_pulses , "Pump pulses" ) STATISTIC_MACRO ( long, device_on_sec , "Device ON sec" ) STATISTIC_MACRO ( long, process_sec , "Process sec" ) STATISTIC_MACRO ( long, conc_volume_01ml , "Conc vol. 0.1 ml" ) STATISTIC_MACRO ( long, sol_volume_20ml , "Sol Volume,20ml" ) STATISTIC_MACRO ( uint, service_entry , "Service entry" ) STATISTIC_MACRO ( uint, last_process_number, "Process num" ) STATISTIC_MACRO ( uchar, consumption_number, "Consum num" ) STATISTIC_MACRO ( uchar, wait_date, "wait date" ) STATISTIC_MACRO ( long, can_volume, "Can volume, ml" ) И разворачивается с помощью макросов. Ниже написана функция чтения переменной (в том числе и из этой структуры) по интерфейсу. Если привыкнуть, то это не больно :) #define IMPL_PROLOG(obj) void obj##GetVar(DompParserResultType * dpr) { switch (dpr->property) { #define IMPL_EPILOG() default: AbsentP(); } } #define IMPL_VARIABLE(obj, i, name, get, set) case i: get; #define IMPL_SETUP(obj, i) case i: dpr->tx_value=GetSetup(i); return; #define IMPL_STATISTIC(obj, i ) case i: dpr->tx_value=GetStatistic(i); return; #define IMPL_HISTORY(obj, i ) case i: dpr->tx_value=GetHistory(i); return; #include objects_file #undef IMPL_PROLOG #undef IMPL_EPILOG #undef IMPL_VARIABLE #undef IMPL_SETUP #undef IMPL_STATISTIC #undef IMPL_HISTORY