Program för WinLirc?
- JimmyAndersson
- Inlägg: 26558
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Program för WinLirc?
Jag söker något bra program för att styra datorn med en IR-fjärrkontroll.
Har laddat ner WinLirc och fixat en mottagare, men det behövs ju något mer för att man ska kunna starta program och styra diverse grejjer.
Har provat FlexRemote och IR-Assistant, men inget av dem fungerade eller motsvarade beskrivningen på sajterna.
edit: Det är förresten en bonus om det finns lite roliga funktioner som t.ex styra parallellport och liknande med fjärrkontrollen. Men det är inget måste.
Har laddat ner WinLirc och fixat en mottagare, men det behövs ju något mer för att man ska kunna starta program och styra diverse grejjer.
Har provat FlexRemote och IR-Assistant, men inget av dem fungerade eller motsvarade beskrivningen på sajterna.
edit: Det är förresten en bonus om det finns lite roliga funktioner som t.ex styra parallellport och liknande med fjärrkontrollen. Men det är inget måste.
Kolla på länken nedan, tror att den stödjer hårdvara, kostar en del, klarar mycket.
http://www.promixis.com/products.php?section=girder
http://www.promixis.com/products.php?section=girder
- JimmyAndersson
- Inlägg: 26558
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
- JimmyAndersson
- Inlägg: 26558
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Nu hittade jag version 3.0.25 som är freeware. Men filen WinLIRC2GIrder.dll kan inte laddas in. Det står bara "Invalid .DLL". DLL-filen ligger i \plugins\hardware och är från version 3.0. Har även provat en aningen nyare version, men det fungerar inte heller.
Har du någon sådan fil som fungerar med Girder?
Har du någon sådan fil som fungerar med Girder?
-
- Inlägg: 88
- Blev medlem: 3 oktober 2005, 03:03:27
Winlirc kan du enkelt styra från ett eget program med APIENTRY.
Här är exempel på kod jag använde för att utföra just den uppgiften:
int APIENTRY sLirc(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
LRESULT copyDataResult;
HWND pOtherWnd = FindWindow(NULL, "WinLirc");
if (pOtherWnd)
{
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = strlen(lpCmdLine);
cpd.lpData = (void*)lpCmdLine;
copyDataResult = SendMessage(pOtherWnd,WM_COPYDATA,(WPARAM)hInstance,(LPARAM)&cpd);
// copyDataResult has value returned by other app
}
else
{
return 0;
}
return 1;
}
Här är exempel på kod jag använde för att utföra just den uppgiften:
int APIENTRY sLirc(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
LRESULT copyDataResult;
HWND pOtherWnd = FindWindow(NULL, "WinLirc");
if (pOtherWnd)
{
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = strlen(lpCmdLine);
cpd.lpData = (void*)lpCmdLine;
copyDataResult = SendMessage(pOtherWnd,WM_COPYDATA,(WPARAM)hInstance,(LPARAM)&cpd);
// copyDataResult has value returned by other app
}
else
{
return 0;
}
return 1;
}
- JimmyAndersson
- Inlägg: 26558
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Du får nog skriva lite mer än så.
1) Vilket språk är det skrivet i? Ser ut som C men ändå inte..
2) Vad är APIENTRY ? Google gav bara massa länkar till kod.
3) Koden ser inte ut som ett fullständigt program. Hur får man det att fungera?
4) Fungerar det även om dll-filerna till WinLirc inte kan laddas in?

1) Vilket språk är det skrivet i? Ser ut som C men ändå inte..
2) Vad är APIENTRY ? Google gav bara massa länkar till kod.
3) Koden ser inte ut som ett fullständigt program. Hur får man det att fungera?
4) Fungerar det även om dll-filerna till WinLirc inte kan laddas in?
-
- Inlägg: 88
- Blev medlem: 3 oktober 2005, 03:03:27
Jimmy:
1) Jag har kompilerat som Cplusplus men koden i sig är nog ganska plain C. Det var så länge sedan jag höll på med rena c-kompilatorer att jag
glömt bort gränsen. Den går i alla fall fint att kompilera som Cplusplus-kod. Jag använde MS-VC version 6. Headern innehåller bara sedvanliga
definitioner av funktionerna.
2) APIENTRY är som namnet anger Application program(ming) interface -entry. Ungefär: en "metod" att anropa funktioner i andra applikationer.
3) En mer fullständig version ser ut så här:
Det är en något skitig men fungerande kod. Jag tror den är tämligen självförklarande.
Funktionen start_winlirc startar winlirc via shellexecute och returnerar 1 om anropet
gick bra annars 0.
Funktionen check_winlirc kollar om kollar om winlirc är startat.
Använd gärna någon typ av delay mellan start_winlirc och check_winlirc, så att winlirc hinner startas.
Metoderna winlirc_setchannel och winlirc_pwrswitch är exempel på själva funktionaliteten.
argumenten 0 - 9 respektive vcr_power är definerade knappar i remotefilen.
Samtliga definierade knappar bör kunna anropas på samma vis.
Funktionen remote_name lämnar namnet på den remotekontroll jag använde vid tillfället.
4) Jag är 99.999999 procent säker på att Winlirc måste fungera fristående. Men får du igång Winlirc
så kommer även detta att fungera. Exemplet anropar således inte winlircs dll-filer utan Winlirc direkt.
Dll-anropet är egentigen snyggare men jag hittade vid tillfället inte någon definition på hur det skulle
göras.
1) Jag har kompilerat som Cplusplus men koden i sig är nog ganska plain C. Det var så länge sedan jag höll på med rena c-kompilatorer att jag
glömt bort gränsen. Den går i alla fall fint att kompilera som Cplusplus-kod. Jag använde MS-VC version 6. Headern innehåller bara sedvanliga
definitioner av funktionerna.
2) APIENTRY är som namnet anger Application program(ming) interface -entry. Ungefär: en "metod" att anropa funktioner i andra applikationer.
3) En mer fullständig version ser ut så här:
Kod: Markera allt
#include "stdafx.h"
#include "snaxc.h"
#include <windows.h>
#include <shellapi.h>
char* remote_name(void)
{
return "Samsung ";
}
int APIENTRY sLirc(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
LRESULT copyDataResult;
HWND pOtherWnd = FindWindow(NULL, "WinLirc");
if (pOtherWnd)
{
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = strlen(lpCmdLine);
cpd.lpData = (void*)lpCmdLine;
copyDataResult = SendMessage(pOtherWnd,WM_COPYDATA,(WPARAM)hInstance,(LPARAM)&cpd);
// copyDataResult has value returned by other app
}
else
{
return 0;
}
return 1;
}
int start_winlirc(void)
{
if((int) ShellExecute(0, "open", "C:\\Program\\winlirc\\winlirc.exe",0, 0 ,SW_SHOWDEFAULT)>32)
return 1;
else
return 0;
}
int check_winlirc(void)
{
HWND pOtherWnd = FindWindow(NULL, "WinLirc");
if (pOtherWnd)
return 1;
else
return 0;
}
void winlirc_setchannel(int lirc_channel)
{
char arg1[30];
char arg2[5];
int dummy;
// todo fix a double click when channel > 9
itoa(lirc_channel,arg2,10);
strcpy(arg1,remote_name());
strcat(arg1, arg2);
dummy=sLirc(NULL,NULL,arg1,0);
}
void winlirc_pwrswitch(void)
{
char arg1[30];
int dummy;
strcpy(arg1,remote_name());
strcat(arg1, "vcr_power");
dummy=sLirc(NULL,NULL,arg1,0);
}
Funktionen start_winlirc startar winlirc via shellexecute och returnerar 1 om anropet
gick bra annars 0.
Funktionen check_winlirc kollar om kollar om winlirc är startat.
Använd gärna någon typ av delay mellan start_winlirc och check_winlirc, så att winlirc hinner startas.
Metoderna winlirc_setchannel och winlirc_pwrswitch är exempel på själva funktionaliteten.
argumenten 0 - 9 respektive vcr_power är definerade knappar i remotefilen.
Samtliga definierade knappar bör kunna anropas på samma vis.
Funktionen remote_name lämnar namnet på den remotekontroll jag använde vid tillfället.
4) Jag är 99.999999 procent säker på att Winlirc måste fungera fristående. Men får du igång Winlirc
så kommer även detta att fungera. Exemplet anropar således inte winlircs dll-filer utan Winlirc direkt.
Dll-anropet är egentigen snyggare men jag hittade vid tillfället inte någon definition på hur det skulle
göras.
-
- Inlägg: 88
- Blev medlem: 3 oktober 2005, 03:03:27
- JimmyAndersson
- Inlägg: 26558
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
-
- Inlägg: 88
- Blev medlem: 3 oktober 2005, 03:03:27
Det finns flera gratis c, c++ kompilatorer att ladda ner.
Här är ett exempel http://www.cs.virginia.edu/~lcc-win32
Här är ett exempel http://www.cs.virginia.edu/~lcc-win32
- JimmyAndersson
- Inlägg: 26558
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Tja man kanske borde börja knappa C igen. Minns att det var ganska kul.
Testade VisualBasic för en tid sedan, men de har gjort om så mycket att det inte påminner så mycket om Basic längre.
edit: Lyckas inte ladda ner dokumentationen om Windows API.
ftp://ftp.cs.virginia.edu/pub/lcc-win32/win32hlp.exe
Länken ovan fungerar inte och jag har inte hittat någon annan som gör det. På Microsoft's sajt blir det 404-fel.

Testade VisualBasic för en tid sedan, men de har gjort om så mycket att det inte påminner så mycket om Basic längre.

edit: Lyckas inte ladda ner dokumentationen om Windows API.
ftp://ftp.cs.virginia.edu/pub/lcc-win32/win32hlp.exe
Länken ovan fungerar inte och jag har inte hittat någon annan som gör det. På Microsoft's sajt blir det 404-fel.

-
- Inlägg: 88
- Blev medlem: 3 oktober 2005, 03:03:27
´JimmyAndersson skrev:Tja man kanske borde börja knappa C igen. Minns att det var ganska kul.![]()
Testade VisualBasic för en tid sedan, men de har gjort om så mycket att det inte påminner så mycket om Basic längre.
edit: Lyckas inte ladda ner dokumentationen om Windows API.
ftp://ftp.cs.virginia.edu/pub/lcc-win32/win32hlp.exe
Länken ovan fungerar inte och jag har inte hittat någon annan som gör det. På Microsoft's sajt blir det 404-fel.
Programmera är alltid kul då det gäller egna projekt. Jag antar att det
är VB.NET du har testat? ISF tycker jag att dom har stuvat om rejält.
Den är dessutom så lik Csharp i stukturen att det knappast är någon
ide att lära sig VB.NET det är bättre att gå på Csharp direkt, som ger vackrare kod och märkligt nog verkar exekvera snabbare.
Detta är givitvis bara min åsikt.
Det finns massor av versioner av api-dokumentation. Om du inte hittar
någon så PM:a din majladress så ska du få en kopia.
edit
Hittade en alternativlänk till lcc:
http://ftp.uni-koeln.de/pc/win32/program/lcc-w32/