Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Значения переменных   Найти похожие ветки 

 
mixi ©   (2004-03-09 14:27) [0]

Есть такая проблема:
Существует некая программа стороннего производителя, которая во время своей работы меняет значения своих переменных. Имена этих переменных известны. Причем изменения происходят ежесекундно.
Вопрос: можно ли используя Delphi написать такую программку, которая будет следить за этими переменными и записывать в какой либо файл, либо в базу данных их ежесекундные значения. Если такое возможно подскажите как сделать.

Заранее благодарен


 
icebeerg ©   (2004-03-09 14:37) [1]

Сложно, помоему. Тут вроде надо бы знать тип переменных, залезть в пространство данных "сторонней" программы отсканить его на предмет известных значений с учетом типа и потом по сегменту и смещению монитроить.
Поправте если я не прав.


 
Игорь Шевченко ©   (2004-03-09 14:37) [2]


> Имена этих переменных известны


Осталось узнать их адреса


 
mixi ©   (2004-03-09 14:48) [3]

А как узнать адреса???


 
Cobalt ©   (2004-03-09 14:57) [4]

Попробуйте отладчик запустить. Может, в проге есть отладочная информация...


 
mixi ©   (2004-03-09 15:00) [5]

Хорошо буду знать адреса что делать дальше????


 
icebeerg ©   (2004-03-09 15:03) [6]

Попробовать указатели на эти адреса накинуть, но тут будет гемор с правами доступа.


 
mixi ©   (2004-03-09 15:07) [7]

Напишите примерчик пожалуйста


 
Digitman ©   (2004-03-09 15:52) [8]


> Имена этих переменных известны


откуда они известны ?
сторонний производитель вместе с исп.модулями предоставил их исх.тексты ?


 
EXE7   (2004-03-09 15:56) [9]

> Имена этих переменных известны
откуда известны?


 
mixi ©   (2004-03-10 07:56) [10]

Сторонний производитель дал SDK со всеми переменными и эвентами. Вот отсюда они и известны. Важно просто брать их значения во время выполнения программы и с интервалом в одну секунду запихивать в файл.


 
evvcom   (2004-03-10 08:02) [11]

А к этому SDK производитель Help не подбросил?


 
Digitman ©   (2004-03-10 08:27) [12]


> дал SDK со всеми переменными


приведи фрагмент текста из SDK, где фигурирует описание некоей "переменной"


 
mixi ©   (2004-03-10 10:36) [13]

И хелп подбросил,
а вот и фрагмент текста:

// defines for VOR_INFO.CODE field
#define VOR_CODE_IS_LOCALIZER   BIT7 // bit7 = 0= VOR  1= Localizer
#define VOR_CODE_GLIDESLOPE       BIT6 // bit6 = 1= Glideslope Available
#define VOR_CODE_BACKCOURSE_UNAVAIL     BIT5 // bit5 = 1= no localizer backcourse
#define VOR_CODE_DME_AT_GLIDE_SLOPE     BIT4 // bit4 = 1= DME transmitter at Glide Slope Transmitter
#define VOR_CODE_NAV_UNAVAILABLE     BIT3 // bit3 = 1= no nav signal available
#define VOR_CODE_VOICE_AVAILABLE     BIT2 // bit2 = Voice Available
#define VOR_CODE_TACAN        BIT1 // bit1 = TACAN
#define VOR_CODE_DME_AVAILABLE      BIT0 // bit0 = DME


 
mixi ©   (2004-03-10 10:38) [14]

Вот типа описание переменных из SDK

// Token list
//
// Token list for abstracted variable access
// The order of variables in this list is tied to the token map in the
// file panels\util_defs.c.  Every token here needs an entry in the
// token map, which maps tokens to variables in memory.
//
// There are two types of tokens.  Normal tokens are used for all the
// variables in GLOBALS, as well as variables exported from modules.
// Special tokens are used for variables which require a function call
// to get the required information.
//
// Tokens can be added anywhere in the list, but keep the lists aligned!
//
// DO NOT CHANGE THE ORDER OF THESE TOKENS UNLESS YOU REALLY KNOW WHAT
// YOU"RE DOING!
//

typedef enum GAUGE_TOKEN
{
MODULE_VAR_NONE = 0,
TICK18,      //  inc"d at 18hz. used for general purpose timing
GROUND_ALTITUDE,   //  ground level altitude (1/256 meter/unit)
CLOCK_HOUR,     //  local clock time, hours {0..23}
CLOCK_MINUTE,    //  local clock time, minutes {0..59}
CLOCK_SECOND,    //  local clock time, seconds {0..59}


 
Плохиш   (2004-03-10 10:42) [15]

>mixi ©   (10.03.04 10:36) [13]
>mixi ©   (10.03.04 10:38) [14]

С Вашими знаниями, Вы слишком рано за такую задачу берётесь.
Почитайте для начала про C-ые описания


 
Digitman ©   (2004-03-10 10:46) [16]

))

и как ты предполагаешь, имея вот это вот "добро", реализовать [5] ?


 
mixi ©   (2004-03-10 13:13) [17]

Ну про знания помолчу. Дело все в том, что это SDK игры Microsoft Flight Simulator точнее SDK для написания собственных приборов для моделей самолетов.Данная задача ставилась для того чтоб написать прибор расшифровщик полетов. А поскольку клиентскую часть я написал на Delphi я и хотел узнать возможно ли сделать чтение переменных на Delphi. Я могу реализовать чтение этих переменных на С вот только dll придется прямо в панель каждой модели совать, что не совсем хочется. Хотелось просто спросить возможно ли это на Delphi и сделать универсальную утилиту для всех моделей. Ну а поскольку я вижу что ни кто не может дать вразумительный ответ по этому поводу. Считаю вопрос снятым и с удовольствием возвращаюсь к С-ным описаниям.


 
Digitman ©   (2004-03-10 14:00) [18]

все что в прикл.задачах можно сделать на C, точно так же можно сделать и на Паскале в Делфи.


> Я могу реализовать чтение этих переменных на С


покажи в коде как ты получаешь доступ к "переменным" в модуле на C - и получишь рекомендации к реализации того же самого в модуле на Паскале в Делфи

ибо есть оч большие сомнения, что ты адекватно воспринимаешь термин "переменная" и его сущность в данном контексте ...


 
mixi ©   (2004-03-10 15:42) [19]

Вот кусок кода в котором считывается значение переменной PLANE_ALTITUDE. И в соответствии с этими значениями поворачивает битмап стрелы соответственно координатам, которые описаны в NONLINEARITY  nonlinearity[] =(для первого битмэпа)и NONLINEARITY  nonlinearity1[] = (для второго битмэпа)

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

// Set up import and export tables and gauge header
char      gauge_name[]  = "SDK.Fuel\0";
extern PELEMENT_HEADER  list;
MODULE_SETUP( GAUGE_HEADER_VERSION, 57, gauge_name, &list )

MODULE_VAR   alt={GROUND_ALTITUDE};
MODULE_VAR   altp={PLANE_ALTITUDE};

NONLINEARITY  nonlinearity[] =
{
       {{18,  94},  0, 0},
       {{15,    74},    10, 0},
{{20,    55},    20, 0},
       {{26,    40},    30, 0},
       {{36,    30},    40, 0},
       {{46,    22},    50, 0},
       {{57,    19},    60, 0},
       {{75,    16},    80, 0},
       {{90,    15},    100, 0},
       {{115,    29},    150, 0},
       {{154,    44},    200, 0},
       {{132,    56},    250, 0},
       {{133,    67},    300, 0},
       {{133,    83},    400, 0},
{{126,  104},  600, 0},
       {{18,    94},    601, 0},
};
NONLINEARITY  nonlinearity1[] =
{
       {{18,  94},  10, 0},
       {{15,    74},    0, 0},
{{20,    55},    30, 0},
       {{26,    40},    40, 0},
       {{36,    30},    20, 0},
       {{46,    22},    60, 0},
       {{57,    19},    90, 0},
       {{75,    16},    80, 0},
       {{90,    15},    100, 0},
       {{115,    29},    150, 0},
       {{154,    44},    200, 0},
       {{132,    56},    250, 0},
       {{133,    67},    300, 0},
       {{133,    83},    400, 0},
{{126,  104},  600, 0},
       {{18,    94},    601, 0},
};

FAILURE_RECORD fail[] =
{
{FAIL_SYSTEM_ELECTRICAL, FAIL_ACTION_ZERO},
{FAIL_GAUGE_FUEL_INDICATORS, FAIL_ACTION_FREEZE},
{FAIL_NONE, FAIL_ACTION_NONE}
};

MODULE_VAR_CB fuel_cb;

MAKE_NEEDLE( needle,
   BMP_NEEDLE,
   NULL,
   NULL,
   IMAGE_USE_TRANSPARENCY|IMAGE_USE_ERASE,
   0,
   {75, 75},
   {27, 4},
   {100, 120},
   PLANE_ALTITUDE,
                               fuel_cb,
                               //NULL,
                               nonlinearity,
                               6)
PELEMENT_HEADER  plist1[] =
{
(PELEMENT_HEADER)&needle,
NULL
};


 
Digitman ©   (2004-03-10 16:31) [20]

куда считывает ? в какую твою переменную ? где это видно в приведенном коде ? какой тип и значение имеет  ид-р PLANE_ALTITUDE ? где прототип MAKE_NEEDLE ? это что - ф-ция ? процедурв ? макрос ? или что ?

то что ты привел - огрызки кода, непонятно как вызываемого ... "на деревню дедушке"


 
coban2k ©   (2004-03-10 18:18) [21]

Ни один компилятор C/C++ не экспортирует даже при дебаге мод"е имена переменных, имена функций пожалуйста, переменных - никогда!



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.025 c
3-1080986096
Хэтч
2004-04-03 13:54
2004.05.02
Можно ли "привязать" Image к строке в Table ?


1-1081865524
madm
2004-04-13 18:12
2004.05.02
Как быстро загружать текст с атрибутами в RichEdit


11-1065719451
Wiz@rd
2003-10-09 21:10
2004.05.02
Как сделать прокси?


7-1078346709
HardClubber
2004-03-03 23:45
2004.05.02
Звонить по телефону с компа


14-1081088912
Гаврила
2004-04-04 18:28
2004.05.02
Постоянная работа для программера в Москве