Finns det någon bra artikel om både hårdvaran och mjukvaran. VB är uselt för "hårdvarumanipulering" (eftersom språket inte har några funktioner för det), men dock är seriell kommunikation (RS-232 alltså), ganska enkel eftersom en kontroll (MSComm) följer med distributionen. Sök på Microsoft Comm Control eller liknande (eller lägg till komponenten i ditt IDE). Om du kan tänka dig att gå via parallellporten så har jag en färdig DLL Det finns två sätt som jag har planerat. Hittade en IR på kjell & Co http://www.kjell.com/?item=31153&path=3340000,4080000 Enklast lösningen är nog en socketlösning (TCP/IP), seriell, eller som Sven säger, en parallellportslösning. Fördelen med att köra via TP är ju att det är mycket enkelt att programmera (winsock). Hmm, det verkar inte vara så krångligt ändå att kommunicera via USB. Hämta GUID:t för din enhet (från registret eller via enumeration), använd CreateFile och bifoga enhetsnamnet, du får ett handtag som returvärde. Då går det sen att kommunicera med DeviceIoControl. Man kan skicka 8-16 bytes, funktionen returnerar 8 bytes. Enklast måste väl ändå vara någon typ vanligt tangentbord? Japp, har tänkt på det men vi använder den datorn till mycket mer en bara visa info på skärmen. Ang tangentbord så har jag också tänkt så. Tror det med och risken är att den kan bli problem. <b>Tror det med och risken är att den kan bli problem.</b> Om det går ser skillnad mellan sifforna från det numeriska delen och de som ligger ovanför bokstäverna så kanske det går Javisst då använder du KeyCod för tangenterna. Två korta frågor (obs, detta är ingen kritik): Ang Int(KeyCode) så kom det sig av att jag testade mot en TextBox och då blev svaret 1(ett) Hittade en gammal IR-mottagare som jag hade för länge sen till seriellporten. Hmm någon som har en kod som kan läsa av en IR-mottagare med MSComm? Fick det att fungerar nu med Winlirc och en winsock i mitt VB program. Ok. Dela gärna med dig av information om hur du löste problemet. Jag körde winlirc för att få min IR-mottagare att fungera och den börja lära sig hur fjärrkontrollen fungerar. Nu är Vi där igen. Så här skall man inte skriva.Styra ett VB program med en extern enhet.
USB, pararell eller seriell kvittar bara det är enkelt och bra.
Min tanke är att jag ska ha X antal knappar på en enhet som när jag trycker på en knapp så uppfattar mitt VB program och gör något.Sv: Styra ett VB program med en extern enhet.
Ett sånt program som du kräver är extremt lätt att göra i Basic, eller Qb. Men om du vill använda VB, så är det kontrollen som gäller, om du inte skriver en egen dll i C och anropar den från VB.
Jag måste veta mer.
Centrala frågor:
Vad ska du skicka data till, och hur tar du emot data?Sv:Styra ett VB program med en extern enhet.
som kan serva 5 knappar kan utvidgas till 5 + 8 = 13 knapparSv: Styra ett VB program med en extern enhet.
1)
IR till en fjärrkontroll, fördelen är att man slipper alla kablar och så har men en del fjärrkontroll som inte används som kan fungera. Nackdelen är att jag inte vet hur man får det till VB att fungera :)
Kanske går om det är en seriel/parallell.
2)
Med kabel och en liten dosa med knappar.
Bakgrunden är att vi har en informationsTV vid våran dörr
Den är kopplad till en dator som kör ett VB program som jag har gjort och det finns ett antal färdiga mallar. Det jag vill göra är att jag ger varje mall sin knapp så när man trycker med kontrollen så ska VB programmet visa just den mallen.
Just nu får man gå till datorn och klicka fram mallen och ibland hinner man inte utan måste snabbt iväg och då kan man ju ha kontrollen vid dörren så när man är på väg ut eller in att man snabbt ställer in rätt mall.
Dosan ska bara skicka data så det blir enkelriktad men hur är det inte bestämt än.
Datorn har USB/Seriell/Pararellellportar i sig så det är bara att välja.Sv:Styra ett VB program med en extern enhet.
Fast den är ju på USB och då vete jag inte hur man ska kunna kontakta den.
Den är ju för överföring men det borde väll gå även att bara sända signaler till den.Sv: Styra ett VB program med en extern enhet.
Sv: Styra ett VB program med en extern enhet.
Under:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tillverkare\USBIODS\Parametersska enhetsnamnet ligga, annars får du enumrera.
Det svåra är att veta hur strukturerna skall bifogas (tillverkarspecifikt), men vissa generiska lösningar fnins säkert.Sv: Styra ett VB program med en extern enhet.
Om du inte vill ha så många knappar borde väl något sånt här funka:
http://www.dustin.se/DacsaPortal/?ProdID=5010080000Sv:Styra ett VB program med en extern enhet.
Om det går ställa in att det som kommer från den där som du visade ska gå till mitt program och inget annat så kan det vara något att tänka på.Sv: Styra ett VB program med en extern enhet.
Tror att ovan nämnda keyPad kommer att köra parallellt med ditt ordinarie tangentbord.Sv:Styra ett VB program med en extern enhet.
Har för mig jag har en fjärrkontroll för seriell i ett förådd hos min mor.Sv: Styra ett VB program med en extern enhet.
Måste ni kunna använda den numeriska delen på det vanliga tangentbordet? Det borde gå att avgöra om man trycker på siffrorna ovanför bokstäverna eller om man trycker på siffrorna på den numeriska delen.
Går det då att kolla om det är på den numeriska delen så vet man att det är från det trådlösa tangetbordet.
ThomasSv:Styra ett VB program med en extern enhet.
Sv:Styra ett VB program med en extern enhet.
Ställ Formens KeyPreview till True och fånga i KeyUp och KeyCode.
<code>
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Select Case Int(KeyCode)
Case Is = 97 ' 1
'Do your stuff
Case Is = 98 '2
' osv
End Select
End Sub
</code>Sv: Styra ett VB program med en extern enhet.
1. Varför använder du koverteringsfunktionen Int, när argumentet redan är int?
2. Varför skriver du case is = konstan när select case mer än gärna opererar med konstanter direkt?
T.ex
<code>
Select Case värde
Case konstant0 : Gör grejjer
Case konstant1 : Gör andra grejjer
Case konstantn : Gör den ultimata grejjen
End Select
</code>Sv:Styra ett VB program med en extern enhet.
Dvs KeyCode antog stringvärdet för tangenten. Du har rätt Int behövs klart inte i mitt ex.
Ang Case Is = 97 så har jag alltid skrivit.
Shit the same det funkar och det finns en förklaring som jag glömt.
Någon som kan förklara varför man skriver Case Is =Sv: Styra ett VB program med en extern enhet.
Förstår att jag ska använda MSComm så nu ska man leta upp lite info så man kan testa den :)Sv:Styra ett VB program med en extern enhet.
Kommer göra ett eget senare men vill först se så det är inga problem med min IR-mottagare så jag kan först utesluta felet på mjukvaran.
/Uppdatering
Har hittat ett script som reagerar när jag trycker på en knapp men jag måste ju programmera den så den fattar vilken knapp den har fått information ifrån.
Någon som har någon bra ide?Sv: Styra ett VB program med en extern enhet.
Tack för all hjälpSv:Styra ett VB program med en extern enhet.
Sv: Styra ett VB program med en extern enhet.
Sedan körde jag denna kod i mitt VB arbete
http://winlirc.sourceforge.net/vb.htmlSv:Styra ett VB program med en extern enhet.
<code>
Dim strData As String
Dim strRemoteHex, strRemoteName, strRemoteKey As String
Dim intRemoteIdx, intSeperatorOne, intSeperatorTwo As Integer
</code>
Så här skall det vara !!!
<code>
Dim strData As String
Dim strRemoteHex As String, strRemoteName As String, strRemoteKey As String
Dim intRemoteIdx As Long, intSeperatorOne As Long, intSeperatorTwo As Long
</code>