Ваши вопросы — «Железные» кокпиты

Да я так и делаю. Пять минут работы острой стамеской приносят удовольствие не только от результата, но и от процесса!

P.S. Старому мудрому человеку (который скорее всего каГтавит) наверное работа не в удовольствие :)

Кстати — он мне и сказал, что непосредственно при резьбе — главное не отвлекаться, а быстро довести инструмент до рабочего состояния. А колдовать над железом (закалка металла, в том числе и исправление погрешностей производителя) — можно и потом :)

Всем доброго времени суток. Столкнулся с такой проблемой при попытке вытаскивания данных из PT: Модули загружаются вечно в разные места памяти. Так вот вопрос: Как в Delphi7 узнать не только расположение процесса в памяти но и модуля(допусти es_154m_3_105.GAU)?

Буду очень благодарен за толковый ответ, а то уже четвертый день пытаюсь найти ответ.

Всем доброго времени суток. Столкнулся с такой проблемой при попытке вытаскивания данных из PT: Модули загружаются вечно в разные места памяти. Так вот вопрос: Как в Delphi7 узнать не только расположение процесса в памяти но и модуля(допусти es_154m_3_105.GAU)?

Буду очень благодарен за толковый ответ, а то уже четвертый день пытаюсь найти ответ.

Вот класс, который я использую для этого в своем PTMediator. (C++). Думаю, разберетесь в нем сами. Если сами не разберетесь, то даже с объяснениями не найдете свой GAU. Еще поищите на форуме, я давно постил, как искать его в памяти с помощью Артмани и ПТ медиатора.

#include "MemoryClass.h"
#include "tlhelp32.h"
#include <string.h>

MemoryClass	Mem; // создадим объект класса

MemoryClass::MemoryClass(void)
{
	Process.Found = false;
	Process.Opened = false;
	Process.dwPID = 0;
}

MemoryClass::~MemoryClass(void)
{
}



DWORD MemoryClass::_ScanSubProcess(DWORD dwPID, char *ModuleName)
{
	HANDLE hSnap;
	DWORD baseaddress;
	MODULEENTRY32 mod;

	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, Process.dwPID);//open main process
				mod.dwSize = sizeof(MODULEENTRY32);	
				// Search PT-154m
				hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, Process.dwPID);
				if (hSnap == NULL) 
				{
					Log.timeStamp() << "MEMORY Error:  Cannot load ToolHelp" << ENDL ;
				}
				if (Module32First(hSnap, &mod))
				{
					while (Module32Next(hSnap, &mod)) 
					{
						if (_debug) Log.timeStamp() << " MEMORY: Parcing Module: " << mod.szModule << ENDL;

						if (strcmp(mod.szModule, ModuleName) == 0)
						{	
							baseaddress = (DWORD) mod.modBaseAddr;
							char charBuf[256];
							sprintf(charBuf, " MEMORY: Base address for %s is 0x%X",ModuleName, (long)baseaddress);
							Log.timeStamp() << charBuf << ENDL;
							CloseHandle(hProcess);
							return baseaddress;
						}		
					}
							Log.timeStamp() << " MEMORY: Base address for " << ModuleName << " was not found" << ENDL;
					CloseHandle(hProcess);
					return 0;
				}
return 0;
}

int MemoryClass::ReadMem()
{
//  int address = 0x038A50; //Адрес ячейки памяти
	int counter =0;
	int value = 0;
		if (true)
		{
                    HANDLE phandle = OpenProcess(PROCESS_ALL_ACCESS, 0 ,Process.dwPID); //Получаем доступ к процессу
					ReadProcessMemory(phandle,(LPVOID)counter,&value,4,0); //Делаем запрос на чтение памяти нашего процесса, value - буфер куда копируются данные
 //                   MessageBox (HWND_DESKTOP, "Memory is read", "Ok", MB_OK | MB_ICONINFORMATION);
					counter++;
					return counter;
		}
		else 	return -111111111;
}





void MemoryClass::_PrintProcessNameAndID( DWORD processID )
{
    TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");

    // Get a handle to the process.

    HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
                                   PROCESS_VM_READ,
                                   FALSE, processID );

    // Get the process name.

    if (NULL != hProcess )
    {
        HMODULE hMod;
        DWORD cbNeeded;

        if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), 
             &cbNeeded) )
        {
            GetModuleBaseName( hProcess, hMod, szProcessName, 
                               sizeof(szProcessName)/sizeof(TCHAR) );
        }
    }

    // Print the process name and identifier.
	char textBuff[256];
    sprintf(textBuff, TEXT(" MEMORY: (PID:%6u)  %s"), processID ,szProcessName);
	Log << textBuff << ENDL;

	if (strcmp(szProcessName, Settings.SIOC.ProcName) == 0 )
		{
			Process.dwPID = processID;
			Process.Found = true;
		}


    CloseHandle( hProcess );
}


void MemoryClass::ListMainProc(char *ProcessName)
{
	Log.timeStamp() << " MEMORY: Preparing for the processes listing" << ENDL;
    // Get the list of process identifiers.
    DWORD aProcesses[1024], cbNeeded, cProcesses;
    unsigned int i;
    if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
        return;
    // Calculate how many process identifiers were returned.
    cProcesses = cbNeeded / sizeof(DWORD);
    // Print the name and process identifier for each process.
    for ( i = 0; i < cProcesses; i++ )
        if( aProcesses[i] != 0 )
            _PrintProcessNameAndID( aProcesses[i] );

	if (Process.Found)	
	{
		Log.timeStamp() << " MEMORY: Main process is located! PID: " << (int) Process.dwPID << " Name: " << Settings.SIOC.ProcName << ENDL;
	}
	else
	{
		Log.timeStamp() << " MEMORY: Main process was not found! Please check if the process is started and the process name is correct:" << Settings.SIOC.ProcName << ENDL;
		return; // и выйти нах
	};

	// начнем перебирать переменные и искать подмодули

	for (int i = 0	; i <= Settings.SIOC.VarCount; i++) // основной цикл перебора
	{
		DWORD tempaddress;
		if (Settings.SIOC.DataVars[i].Valid) tempaddress = _ScanSubProcess(Process.dwPID, Settings.SIOC.DataVars[i].SubProcName);
		Settings.SIOC.DataVars[i].SubProcAddress = tempaddress;
		PostMessage(Display[DATA_TAB_ID].hWnd, ID_SUBADDR_UPDATE_VAR, NULL, (WPARAM)i); 
	}; // конец основного цикла перебора

	if (Process.Found) 	PostMessage(Display[DATA_TAB_ID].hWnd, ID_START_MEMSYNC, NULL, NULL); 

}

 

Спасибо огромное! Буду вникать. А среда C++ Builder 6.0 подойдет или это в студие делалось?


Edited by jonny247

Спасибо огромное! Буду вникать. А среда C++ Builder 6.0 подойдет или это в студие делалось?

 

Тот листинг, что я привел не скомпилируется, ибо это кусочек PT Mediator-a. Я его привел здесь, чтобы показать какие фунции из WinApi32 надо использовать для поиска процессов и их модулей. Т.е. EmumProcess, GetProcessModules и т.д. Это все функции стандартной библиотеки Windows, Psapi, Toolhelp-а и т.д. Еще может помочь погуглить «перечислить все процессы и все модули в Windows». Там будет примерчик, который скомпилится и перечислит Вам все процессы и все субмодули. В какой среде писать, без разницы мне кажется, библиотеки, что Вам нужны, доступны для любой среды ИМХО. В сети просто примеров наверное больше на C++ для Visual Studio. Я поэтому на ней и стал делать медиатор свой. А так вообще я не программист (дяденька, я ненастоящий сварщик 😀 ), просто мне надо было сделать роутер в свое время для проекта. Отсюда и нестройный код, в который врезаны куски примеров, которые я искал в сети и комментарии в нем неполиткорректные :)

… Я поэтому на ней и стал делать медиатор свой. А так вообще я не программист (дяденька, я ненастоящий сварщик  😀 ), просто мне надо было сделать роутер в свое время для проекта. Отсюда и нестройный код, в который врезаны куски примеров, которые я искал в сети и комментарии в нем неполиткорректные :)

Подскажите. а ваш роутер работает с железом KREML’ина?(F2/L2) А то может я зря пытаюсь изобрести велосипед(а то и колесо пытаюсь заново открыть).

В любом случае примного вам благодарен за наставление на путь истинный)))

Подскажите. а ваш роутер работает с железом KREML’ина?(F2/L2) А то может я зря пытаюсь изобрести велосипед(а то и колесо пытаюсь заново открыть).

В любом случае примного вам благодарен за наставление на путь истинный)))

Тоже заинтересовал этот вопрос )

Подскажите. а ваш роутер работает с железом KREML’ина?(F2/L2) А то может я зря пытаюсь изобрести велосипед(а то и колесо пытаюсь заново открыть).

В любом случае примного вам благодарен за наставление на путь истинный)))

Нет, но если мне дадут спецификацию интерфейса, то прикрутить его дело недели работы по вечерам. У меня есть железо от Kreml, но уже год так и лежит в коробке, как бандеролька пришла :( Штурвал до стапелей пока не добрался, вот я и не делал. У меня в основном платы все на сиоке, вот я под него и делал медиатор. Много кому надо на F2/L2? Спецификация API обмена есть?

Нет, но если мне дадут спецификацию интерфейса, то прикрутить его дело недели работы по вечерам. У меня есть железо от Kreml, но уже год так и лежит в коробке, как бандеролька пришла :( Штурвал до стапелей пока не добрался, вот я и не делал. У меня в основном платы все на сиоке, вот я под него и делал медиатор. Много кому надо на F2/L2? Спецификация API обмена есть?

Виталя, привет!

Можно вечером созвониться и я попробую тебе рассказать часть, потому как сам все не знаю. Там протокол еще в стадии наполнения и изменения, но основное уже есть.

Здравствуйте уважаемые!

Прошу совета.

Восстанавливаю РУС МиГ-23 до исходного состояния и столкнулся с вопросом нанесения надписей на верхнюю крышку. Крышка не родная(изготовлена из алюминия), по этому надписи необходимо наносить с нуля. Вопросы:

— может кому попадался аутентичный авиационный шрифт, поделитесь ссылочкой?

— посоветуйте технологию нанесения этих надписей(станка с ЧПУ и гравера в хозяйстве нет)

Спасибо!

Виталя, привет!

Можно вечером созвониться и я попробую тебе рассказать часть, потому как сам все не знаю. Там протокол еще в стадии наполнения и изменения, но основное уже есть.

Ок, уходим в личку тогда, чтобы не флудить.

Подскажите. а ваш роутер работает с железом KREML’ина?(F2/L2) А то может я зря пытаюсь изобрести велосипед(а то и колесо пытаюсь заново открыть).

В любом случае примного вам благодарен за наставление на путь истинный)))

Ответ содержится в этом сообщении http://www.avsim.su/forum/topic/111118-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BE%D0%BA%D0%BF%D0%B8%D1%82%D0%B0-%D1%81-%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BD%D1%83%D0%BB%D1%8F/page-37#entry2611520. 

Обратитесь к Евгению, Вам нужны роутеры F2 <-> IOCP.  А PTMediator будет делать Вам синхронизацию памяти гауга <-> IOCP. Все будет быстро работать, PTМедиатор специально оптимизирован на скорость, думаю, цепочка из двух роутеров видимых задержек не прибавит.

посоветуйте технологию нанесения этих надписей(станка с ЧПУ и гравера в хозяйстве нет)

Хм… Либо найти станок с ЧПУ или гравер на стороне, либо найти в гаражах перебойщиков номеров и попользоваться их шрифтом. Хотя у них могут быть только цифры. У меня вот есть почти полная узкая семёрка, весьма редкий шрифт, не могу недостающие шесть букв найти.

И вообще, в профиле не зря пустует графа «Место жительства», может открыть путь для предложений.

Уважаемые кокпитостроители, приобрел потенциометры, вот эти: http://www.ebay.com/itm/5-1-Pole-8-Position-PANEL-PCB-Wiring-ROTARY-SWITCH-1P8T-/390697404791?pt=LH_DefaultDomain_3&hash=item5af7614977 для панели AUTOBRAKE, а у них не совпадают обороты щелчков с рисками на панели, или это нормально!? Может посоветуете где другие приобрести..

post-87779-0-98374400-1390790050_thumb.jpg

Уважаемые кокпитостроители, приобрел потенциометры, вот эти: http://www.ebay.com/itm/5-1-Pole-8-Position-PANEL-PCB-Wiring-ROTARY-SWITCH-1P8T-/390697404791?pt=LH_DefaultDomain_3&hash=item5af7614977 для панели AUTOBRAKE, а у них не совпадают обороты щелчков с рисками на панели, или это нормально!? Может посоветуете где другие приобрести..

Вам нужны с ходом на 45 градусов! Можно взять здесь :http://www.opencockpits.com/catalog/interruptor-rotativo-posiciones-p-155.html?cPath=24_55


Edited by mishanya_izgib

Вам нужны с ходом на 45 градусов! Можно взять здесь :http://www.opencockpits.com/catalog/interruptor-rotativo-posiciones-p-155.html?cPath=24_55

Все верно.На ebay таких не нашел, только на опенкокпитс или тут http://www.simworld.pl/shop/product_info.php?cPath=2&products_id=54

Да, я тоже склоняюсь уже к тому, что кроме Поляков и Испанцев купить больше не где!  Будем брать, значит у них! Эх, надо было сразу заказывать вместе с MIP-панелями, но думал, я самый умный и сэкономлю на покупке с eBAY,а оно вот оно как… :umnik2: Спасибо Вам ребята всем за советы.  Значит, мне нужно для моей MIP (брал эту  http://www.simworld.pl/shop/product_info.php?cPath=10&products_id=36) 7  потенциометров  с ходом на 45 градусов и все на восемь позиций!? А эти, модифицированные мной с eBAY, больше ни куда не пойдут в кокпите, можно их считать учебным материалом?! Спасибо Вам! :sarcastic:

Это не потенциометры. Это поворотные переключатели. Потенциометрами называются переменные резисторы с большой ручкой для оперативного кручения руками (бывают еще маленькие переменные резисторы, под отвертку, они называются подстроечными).


Edited by САБ

Да, я тоже склоняюсь уже к тому, что кроме Поляков и Испанцев купить больше не где!  Будем брать, значит у них! Эх, надо было сразу заказывать вместе с MIP-панелями, но думал, я самый умный и сэкономлю на покупке с eBAY,а оно вот оно как… :umnik2: Спасибо Вам ребята всем за советы.  Значит, мне нужно для моей MIP (брал эту  http://www.simworld.pl/shop/product_info.php?cPath=10&products_id=36) 7  потенциометров  с ходом на 45 градусов и все на восемь позиций!? А эти, модифицированные мной с eBAY, больше ни куда не пойдут в кокпите, можно их считать учебным материалом?! Спасибо Вам! :sarcastic:

Те что купленные на Ebay пригодяться Вам для оверхеда, там есть переключатели на 30 град,  и один еще на МСP


Edited by popovichyr

Спасибо,

popovichyr

  значит, не все так уж и плохо… :umnik2:


Edited by Antonio737

В продаже есть готовое решение под вашу панель. Сэкономит время:

http://www.sismo-soluciones.com/index.php/shop/components-parts/1-2013-08-20-detail

В продаже есть готовое решение под вашу панель. Сэкономит время:

http://www.sismo-soluciones.com/index.php/shop/components-parts/1-2013-08-20-detail

Сергей привет, но Вы ведь тоже говорите, что нравится собирать  своими руками, тем более  собрать этот модуль самому совсем не сложно,зачем переплачивать существенную разницу!?

Это не потенциометры. Это поворотные переключатели. Потенциометрами называются переменные резисторы с большой ручкой для оперативного кручения руками (бывают еще маленькие переменные резисторы, под отвертку, они называются подстроечными).

Спасибо САБ за науку, усвоил… :secret:

Доброго времени суток всем кокпитстроителям .

 

048_tm.jpg

 

Кто-нибудь знает , где можно взять точные размеры всех MIP-панелей Boeing 737

Меня интерсуют размеры мелких панелей , а не только MAIN.

 

Спасибо всем за помощь

 

Доброго времени суток всем кокпитстроителям .
 
048_tm.jpg
 
Кто-нибудь знает , где можно взять точные размеры всех MIP-панелей Boeing 737
Меня интерсуют размеры мелких панелей , а не только MAIN.
 
Спасибо всем за помощь

 

Я сам долгое время бороздил просторы интернета, но так и не нашел. Попадались несколько ссылок на  западные сайты, с точными размерами, но там, по каким то соображениям, почему- то быстро все удаляется, после размещения .Может, делается это специально, что- бы люди покупали у определенных изготовителей, или не пытались самостоятельно изготовить  самолет, кустарным производством, по этим чертежам :rtfm:  :sarcastic: . Пришлось все- таки и мне покупать готовые, у производителей. В принципе, не жалею и качеством доволен.  Может я ошибаюсь, но 99%. вряд- ли Вы что найдете толкового по размерам!


Edited by Antonio737