Program för WinLirc?

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
JimmyAndersson
Inlägg: 26558
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Program för WinLirc?

Inlägg av JimmyAndersson »

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.
74
Inlägg: 52
Blev medlem: 29 augusti 2006, 12:06:37
Ort: Skåne

Inlägg av 74 »

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
Användarvisningsbild
JimmyAndersson
Inlägg: 26558
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Tack för tipset. Det verkar vara ett bra program.
Tyvärr var det lite för stor prislapp.

Eftersom WinLirc är gratis och jag byggde ihop elektroniken för några kronor så vore det trevligt om man kunde fortsätta med samma prisbild för styrprogrammet. :)
74
Inlägg: 52
Blev medlem: 29 augusti 2006, 12:06:37
Ort: Skåne

Inlägg av 74 »

Programvara fanns som share/freeware för ett tag sedan så det kan vara en ide att googla lite....... sök på Girder
Användarvisningsbild
JimmyAndersson
Inlägg: 26558
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

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?
Pitbull_dog
Inlägg: 88
Blev medlem: 3 oktober 2005, 03:03:27

Inlägg av Pitbull_dog »

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;
}
Användarvisningsbild
JimmyAndersson
Inlägg: 26558
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

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?
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

APIENTRY => API-Entry kanske?

C-kod definitivt, sannolikt M$ VC.

Verkar vara interfacen till "WinLirc.dll"
Pitbull_dog
Inlägg: 88
Blev medlem: 3 oktober 2005, 03:03:27

Inlägg av Pitbull_dog »

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:

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);
}

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.
Pitbull_dog
Inlägg: 88
Blev medlem: 3 oktober 2005, 03:03:27

Inlägg av Pitbull_dog »

Icecap skrev:APIENTRY => API-Entry kanske?

C-kod definitivt, sannolikt M$ VC.

Verkar vara interfacen till "WinLirc.dll"
Rätt

Troligen rätt, Rätt

Nix, men det ser säkerligen snarlikt ut.
Användarvisningsbild
JimmyAndersson
Inlägg: 26558
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Jag förstår i princip koden, men det känns jobbigt att behöva kompilera om koden varje gång man vill lägga till eller ändra vad som ska styras. Särskillt eftersom jag inte har någon c-kompilerare för PC. Har inte programmerat C på minst 10 år. (Då var det till Amiga.) :)
Pitbull_dog
Inlägg: 88
Blev medlem: 3 oktober 2005, 03:03:27

Inlägg av Pitbull_dog »

Det finns flera gratis c, c++ kompilatorer att ladda ner.
Här är ett exempel http://www.cs.virginia.edu/~lcc-win32
Användarvisningsbild
JimmyAndersson
Inlägg: 26558
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

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. :(
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Finns inte dokumentationen på http://msdn.microsoft.com ?
Pitbull_dog
Inlägg: 88
Blev medlem: 3 oktober 2005, 03:03:27

Inlägg av Pitbull_dog »

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/
Skriv svar