|
|
|
|
|
|
|
|
|
|
|
|

Cum sa-ti
faci o telecomanda cu fir conectata la portul midi
Ce poti sa faci cu telecomanda asta ?
Poti sa comanzi WinAmp-ul,Bsplayer-ul ,sa deschizi Explorerul sau
orice comanda iti trece prin cap.
Pentru o telecomanda simpla (cu fir deocamdata)
iti trebuie urmatoarele :
-componenta mea MyGamePort -pe
care o gasesti in sectiunea download.
-Borland C++ Builder 1 (merge
si cu Delphi)
-cateva intrerupatoare (cate butoane vrei) si
niste fire de sarma. |
|
|
|
|
|
1.Cum
functioneaza ? |
|
|
Principiul
de functionare este foarte simplu.Componenta MyGamePort urmareste
portul Midi care are 4 iesiri digitale si 4 analog.Este un fel de
driver pentru telecomanda pe care o sa o realizezi.Telecomanda e
un nume prea pompos pentru cateva intrerupatoare si o mana de sarme,
dar deocamdata o sa pastram numele asta.
Acuma sa vedem mai in detaliu structura portului midi. |
|
|
 |
|
Pinii sunt numerotati astfel
: |
|
|
|
 |
|
O
alta reprezentare arata asa :
Gnd - adica masa (Ground)
D1,D2,D3,D4 sunt intrarile digitale si A1,A2,A3,A4 intrarile analog.
|
|
|
2.Realizarea
Telecomenzii |
|
|
Aici in functie
de ce vrei sa comanzi cu telecomanda ai nevoie de un 1-8 butoane,niste
fire (de preferinta un cablu cu 2-9 fire si un conector de 15 pini
(exact ca la joystick). |
|
De exemplu
sa zicem ca vrem sa comandam Bsplayer-ul sauWimAmp-ul . Bsplayer
este un player popular de filme divX si in plus ofera si suport
pentru subtitrari, iar spre deosebire de MicroDvd ,are meniurile
chiar si in limba romana.
Sa zicem ca vrem sa avem pe telecomanda butoanele Play, Pause,Stop.Deci
vom avea nevoie de 3 butoane pe care le vom conecta la gameport
(la portul midi).
Intrarile digitale se afla la pinii 2,7,10,14 iar masa la 4,5,12.
Vom conecta primul buton la pinii 2 si 4, al doilea la 7 si 4 si
al treilea buton la 10 si 4 (sau 5 sau 12 - nu conteaza, pentru
ca 4,5 si 12 sunt conectate impreuna) . Pentru o intelegere mai
buna priveste imaginea de mai jos. |
|
|
 |
|
Acuma ca am realizat telecomanda,
sa trecem la pasul 2 si anume sa facem programul care urmareste
butoanele si face ce trebuie sa faca,adica sa puna pauza ,stop si
play la Bsplayer.
Am scris componenta MyGamePort in limbajul pascal si unele
linii de cod sunt in assembler ,dar componenta de fapt e
pentru Borland Builder ,unde limbajul e C++(ce-a fost in
capul meu !?).
Deci primul pas consta in instalarea componentei in Builder : de
la Component ->Install->Add->Browse se cauta MyGamePort.pas
Pasul doi : facem programul. (File->New Application)
Includem bsp.h (care va fi copiat in Borland\CBuilder\INCLUDE) :
#include "bsp.h"
Punem pe Form1 : un MyGamePort , un Timer cu Intervalul 50 milisecunde.
La events OnTimer :
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
MyGamePort1->Update=1; //ca sa updateze
datele de la port
if(MyGamePort1->Digital1==1)
SendMessage(bsp_hand,WM_BSP_CMD,BSP_Play,0);
if(MyGamePort1->Digital2==1)
SendMessage(bsp_hand,WM_BSP_CMD,BSP_Pause,0);
if(MyGamePort1->Digital3==1)
SendMessage(bsp_hand,WM_BSP_CMD,BSP_Stop,0);
}
bsp_hand -e handle-lul ferestrei Bsplayer,care poate fi obtinut
astfel :
HWND bsp_hand;
bsp_hand=FindWindow("BSPlayer",NULL);
Si Gata ! Simplu nu ? |
|
|
3.Informatii
finale |
|
|
Binenteles ca mai exista
si alte comenzi ca : VolumeUp ,VolumeDown,SetSkin GetFileName,de
fapt sunt toate comenzile pe care poti sa le dai din Bsplayer.Toate
se gasesc in bsp.h ,care se gaseste in directorul unde ati instalat
Bsplayerul (de obicei in : Program Files\Webteh\BSPlayer\sdk\Bsp.h
).Tot aici gasiti si Bsp.pas care face acelasi lucru ,numai ca e
scris in limbajul pascal.
Codul care ia starea portului midi este scris in assembler :
asm
mov dx,0201h
in al,dx
mov entree,al
Iar pentru reset :
asm
mov dx,0201h
mov ax,00001111b
out dx,al
Astea se gasesc in MyGamePort.pas daca vrei sa te uiti la ele.Atentie
ca functioneaza pe win95, 98 dar nu si pe Xp.(deocamdata)
Pentru orice nelamuriri sau intrebari trimite-mi un email la mountain@home.ro |
©2004 Mountain |
|
|