Форум Trainsim

Форум Trainsim (http://www.trainsim.ru/forum/index.php)
-   MSTS - Подвижной состав (http://www.trainsim.ru/forum/forumdisplay.php?f=18)
-   -   АЛСН (http://www.trainsim.ru/forum/showthread.php?t=6326)

MATRIXXX 20.02.2009 22:13

АЛСН
 
Парни такая тема уже была но что то её не видно! Хочу вывести сигналы АЛСН с MSTS на реальный АЛСН с локомотива через USB, кто может пробовал что подскажите!какая схема нужна и вообще что и как!

Aleks 21.02.2009 14:00

Для этого нужно решить три задачи:
1. Получить информацию о показании АЛСН из памяти игры программным путем.
2. Передать эту информацию на какое-либо внешнее устройство (пины LPT порта или спец. интерфейсная плата).
3. Преобразовать полученный сигнал в зажигание огня на индикаторе АЛСН.

По первому пункту: программно вытащить из памяти игры значение SIGASP впередистоящего светофора - не проблема. Используем функцию ReadProcessMemory(), адерс для SIGAPS 0x84af46, значение типа int.

Передать информацию тоже не сложно. Можно использовать простую запись на пины порта LPT. Можно девайсы посложнее:
LPT: [url]http://www.chip-dip.ru/product0/2362.aspx[/url]
USB: [url]http://www.chip-dip.ru/product0/937406537.aspx[/url]
Все это дело программируется достаточно просто. Еще советую сайтик [url]http://www.pcports.ru[/url], тут много полезного про вывод информации из компьютера на внешние устройства.

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


P.S. По подобной схеме у меня прекрасно работает, подключенная к МСТС, кабина от вагона типа Е: [url]http://www.trainsim.ru/forum/showthread.php?t=4783&page=4[/url]

MATRIXXX 22.02.2009 11:41

По первому пункту: программно вытащить из памяти игры значение SIGASP впередистоящего светофора - не проблема. Используем функцию ReadProcessMemory(), адерс для SIGAPS 0x84af46, значение типа int.

Опиши подробней пожалуйста!

К сожелению не умею но придётся научиться!

Aleks 22.02.2009 12:44

Программировать на C++ умеешь? Тогда вечером или завтра напишу код для этого дела.

Aleks 24.02.2009 20:33

[QUOTE=MATRIXXX;72551]Опиши подробней пожалуйста![/QUOTE]
Читаем из памяти с помощью функции:
ReadProcessMemory(hProcess, (LPCVOID)pSigAsp, &SigAsp, 4, NULL);
где
DWORD pSigAsp = 0x84af46;
SigAsp - переменная типа int, в которую записывается прочитанное значение.

hProcess получаем следующим образом:
hProcess = OpenProcess( PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, dwProcessID);


Для получения ProcessID по имени exe-файла используем следующие функции:
[code]
bool GetProcessByExeName(void)
{
HANDLE hProcessSnap;
PROCESSENTRY32 pe32 = {0};

hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
return false;
}
pe32.dwSize = sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap, &pe32))
{
do {
if(CompName(pe32.szExeFile, ExeName)) // Сравнение имени процесса с ExeName
{
dwProcessID = pe32.th32ProcessID; // Возврат ID найденного процесса
CloseHandle(hProcessSnap);
return true;
}
} while(Process32Next(hProcessSnap, &pe32));
}
CloseHandle(hProcessSnap);
return false;
}[/code]
[code]
// Сравнение именен процессов
bool CompName(char *Name, char *exeName)
{
while (*Name && *exeName)
{
if ( toupper(*Name) != toupper(*exeName) )
{
return false;
}
Name++;
exeName++;
}
return !(*Name || *exeName);
}[/code]

Вроде разобраться можно.

MATRIXXX 24.02.2009 21:22

Слушай а поповоду вывода с компа своими руками что можно смострячить?

Aleks 24.02.2009 21:47

Сайт [url]http://www.pcports.ru/[/url] тебе в помощь. Глянь статьи про LPT-порт. Там все очень просто.

MATRIXXX 24.02.2009 22:08

Слушай покупать не хочу хочу сам спаять где достать схему и какие там чипы стоят и тд!?

Aleks 24.02.2009 22:20

Нафига чипы? Вот способ управления светодиодами. Осталось только развязку транзисторную сделать и можно лампами управлять.
[url]http://www.pcports.ru/articles/6.php[/url]

MATRIXXX 24.02.2009 22:30

Сё кажись просёк фишку! Спасибо Aleks

DeBUG 24.02.2009 23:51

Купите готовое устройство обмена данных с внешним УД по средством УСБ порта и адаптируйте под свои нужды.
Искать можно по инету или на ближайшем развале радио деталей.с Как правило в комплект входит программа(интерфейс) командного управления.

RUSHPIL 28.02.2009 02:46

Зачем покупать,если можно самому изготовить и с меньшими затратами;)
Тоже штука заинтересовала.Самому изготовить печатную плату,все спаять-не проблема,а вот софт-это тяжко для меня.Matrixхx,если сварганишь софт,дай знать,плиз.Буду очень благодарен.

Сибиряк 28.02.2009 05:35

А возможно ли сделаьть так, чтоб ПБ светился огням?
[img]http://s43.radikal.ru/i102/0902/b5/dd8f16e79610.jpg[/img]

Ace Hard 28.02.2009 10:37

[QUOTE=DeBUG;72950]Купите готовое устройство обмена данных с внешним УД по средством УСБ порта и адаптируйте под свои нужды.
Искать можно по инету или на ближайшем развале радио деталей.с Как правило в комплект входит программа(интерфейс) командного управления.[/QUOTE]
По-подробнее, пожалуйста!

DeBUG 28.02.2009 20:40

[QUOTE=Ace Hard;73438]По-подробнее, пожалуйста![/QUOTE]

Есть микропроцессорные блоки для управления оборудованием путем командного ввода с компьютера. Комп - микропроцессор - с - устройства действия. Модуль имеет шину управления. К шине подключаются съёмники команд. На шину подключаеться от 250 - 394 съёмников, а к ним УД. Я такое видел, когда готовили линию станков по обработке металла. Только это все импортное.


Текущее время: 03:19. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim