Sida 1 av 1
PC fjärrkontroll: Uppgraderingar[bilder]
Postat: 30 december 2005, 13:27:32
av Rick81
Jag har byggt en trådlösfjärrkontroll till min PC. Jag har slaktat en gammal gamepad och gjort ett nytt kretskort. Kretskortet innehåller en PIC, Kjell o CO AM-modul mottagare, 16 knappar och en analog "mushastighetsspak" samt motstånd och dioder.
Till PC har jag byggt en mottagare som består av en PIC, Kjell o CO AM modul mottagare, lysdiod och är kopplad till PC via parallellporten.
I PC har jag ett C++ med win32API program där man kan välja upp till 3 tangenter per knapp eller musfunktioner. 4 olika lägen finns, för nuvarande
1 = surfning, program,filhantering 2 = spel 3 = winamp 4 = VLC vilka lätt kan programmeras om via ett annat program.
Allt fungerar utmärkt, men jag funderar på att fixa lite saker.
1) göra om parallell kommunikationen till USB. Har skaffat PIC 18 serien med inbyggd USB men har problem att få in det i mitt C++ program. Antar att det smidigaste är att göra en virtuel serieport. Har någon några länkar eller erfarenhet av bibliotek för detta? Och var kan man hitta lämpliga bibliotek
2) Kjell o CO modulerna är lätta att använda, har bra räckvidd men de har för lång "startup" tid....dvs från man börja sända tills datan är stabil tar uppemot 50 ms vilket ger en märkbar fördröjning när man spelar spel. Någon som vet något bättre alternativ, som inte är för dyrt, alt. kretsschema på en krets som är bättre.
Postat: 30 december 2005, 13:30:34
av jack
Välkommen till forumet!
Bilder?
Ungefär hur lång räckvidd är det ungefär?
Postat: 30 december 2005, 13:34:48
av Rick81
Jag kan fixa bilder i helgen.
Räckvidden täcker åtminstone överallt på en 3:a på 76 kvadrat, även på balkongen genom betongväggar och annat. Har inte testat max räckvidd.
Re: PC fjärrkontroll: Uppgraderingar
Postat: 30 december 2005, 14:27:42
av cykze
Rick81 skrev:1) göra om parallell kommunikationen till USB. Har skaffat PIC 18 serien med inbyggd USB men har problem att få in det i mitt C++ program. Antar att det smidigaste är att göra en virtuel serieport. Har någon några länkar eller erfarenhet av bibliotek för detta? Och var kan man hitta lämpliga bibliotek
libusb (eller Windows-porten
libusb-win32) är rätt smidigt. Jag tror knappast att det kan vara enklare. Man går igenom en lista på vilka enheter som finns inkopplade till USB-portarna och väljer sedan den man vill kommunicera med. Själva kommunikationen består bara av en funktion. Jag har använt det för att kommunicera med en AVR som kör USB (Low-Speed) med control-överföringar. libusb fungerar under Windows, Linux och MacOS X utan att man ska behöva göra några ändringar.
Att låta PIC:en agera serieport kan ju också vara ett alternativ. Frågan är vilket sätt som är enklast.
Postat: 31 december 2005, 17:18:08
av Rick81
Här kommer bilderna:
Den omgjorda gamepaden(jag vet det är fult med genomskinligt):

observera analoga spaken högst upp till höger, används till att ändra mushastighet

mottagaren som använder sig av parallellporten

mottagaren för USB

C++ programmet. Ettorna visar vilken knapp som är intryckt AD = ad värdet
Postat: 31 december 2005, 17:48:29
av cykze
Snyggt gjort!

Hur gjorde du med USB-programmeringen i Windows?
Postat: 31 december 2005, 17:56:55
av Rick81
cykze skrev:Snyggt gjort!

Hur gjorde du med USB-programmeringen i Windows?
Jag har laddat ned biblioteket som du föreslog och tittat lite på det. Verkar vara precis det jag behöver. Har du någon kod man kan få titta på? Är det anpassat för Borland kompilatorn? Jag använder Borland för klassen som sköter parallellporten.
Postat: 31 december 2005, 18:49:04
av cykze
Kod: Markera allt
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <usb.h>
int main()
{
struct usb_bus *bus;
struct usb_device *dev;
usb_init();
usb_find_busses();
usb_find_devices();
for(bus=usb_get_busses(); bus; bus=bus->next)
for(dev=bus->devices; dev; dev=dev->next)
printf("Vendor: 0x%04X Product: 0x%04X\n", dev->descriptor.idVendor, dev->descriptor.idProduct);
return 0;
}
Prova den koden först. Den bör lista alla USB-enheter. I Windows ska du nog installera "Filter Driver" först. Den bör göra så att alla installerade enheter kan kommas åt från libusb.
Det andra alternativet ("Device Driver") som det står om på
libusb-win32 är att man tar en exempel-inf-fil och sedan redigerar den och väljer att ladda den när man blir ombedd att installera en drivrutin. Prova sedan med programmet "testlibusb-win.exe" som tydligen ska följa med i paketet för att se om din enhet kan hittas.
Läs mer under rubriken "Installation".
Jag har inte testat libusb under Windows än (ska göra det när jag får tid). Men läser man under Development->Using så verkar det som att det finns färdiga libs för Borlands BCC-kompilator. Du får prova lite.
Kolla även den lilla dokumention som finns på
http://libusb.sourceforge.net/doc/
Postat: 6 januari 2006, 23:11:55
av Rick81
Jag får inte lib USB att funka. Testprogrammet hittar min USB enheter, men när jag testar koden
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <usb.h>
int main()
{
struct usb_bus *bus;
struct usb_device *dev;
usb_init();
usb_find_busses();
usb_find_devices();
for(bus=usb_get_busses(); bus; bus=bus->next)
for(dev=bus->devices; dev; dev=dev->next)
printf("Vendor: 0x%04X Product: 0x%04X\n", dev->descriptor.idVendor, dev->descriptor.idProduct);
return 0;
}
så får jag följande felmeddanden:
Error: Unresolved external '_usb_init' referenced from C:\BORLAND\BCC55\BIN\USBT
EST.OBJ
Error: Unresolved external '_usb_find_busses' referenced from C:\BORLAND\BCC55\B
IN\USBTEST.OBJ
Error: Unresolved external '_usb_find_devices' referenced from C:\BORLAND\BCC55\
BIN\USBTEST.OBJ
Error: Unresolved external '_usb_get_busses' referenced from C:\BORLAND\BCC55\BI
N\USBTEST.OBJ
Den hittar usb.h sen vet jag inte varför den klagar. Någon ide?
Postat: 6 januari 2006, 23:57:03
av sprawl
det är i länkningen du får problemet, antingen har du inte länkat med det libbet som följer med förmodligen någon fil som slutar med .lib. Eller så har borland ett annat format på namnen av funktionerna och det går inte så enkelt att länka med ett lib som är gjort till en annan kompilator.
/andreas
Postat: 7 januari 2006, 00:32:56
av Rick81
Jag håller på och tittar lite på USB i PIC182455. Mycket register. Någon som har programmerat med USB i PIC18 serien och kan bidra med lite kod? Vet inte vad alla olika bitarna betyder. Ett fungernade program att titta på konfiguration av USB skulle underlätta.