Форум: "WinAPI";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизЗначения переменных Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.053 c