Kevinoud
Een zak tuinaarde opescheuren
met een skeleton program ?
je bedoelt zonder die 1300 regels ?
dat kan niet in proton.
Als je een device opgeeft gebruikt hij dat bestand.
Overigens doet hij hetzelfde bij de 18F2550 die ook usb heeft.
Ik heb er nog niks op gevonden.
Ik dacht bij mezelf, ik kijk zelf ook even.
Helaas is EasyHID verwijderd uit Proton+ wegens gedonder met usb.org.
Maar ik heb op de laptop nog een oudere versie staan, EasyHID even overgezet naar de laatste betaversie.
Defaultwaarden genomen, dat levert 63 regels (inclusief header) op voor een 18F4550 en geen errors. Op de laptop idem dito.
Daarnaast nog een include file van 263 regels en bijna 10kB aan VB files.
Kevinoud
Een zak tuinaarde opescheuren
De pic18F controller word netjes gevonden met de standaart vid en pid van easyhid.
Ik ben nu bezig met Visual Studio 2008 dus hij converteerd de VB file die easyhid uitspuugd.
Ik heb nu "een programma" maar ik krijg ene melding dat hij mcHID.dll niet vinden die toch echt in mijn system32 map staat.
Daardoor werkt alles waarschijnlijk niet en kan hij geen verbinding maken met de pic.
System.DllNotFoundException: Kan DLL mcHID.dll niet laden: Kan opgegeven module niet vinden. (Uitzondering van HRESULT: 0x8007007E)
hadv
Just find out what you like and let it kill you
Zoals ik de foutmelding lees betekent het dat de .dll niet wordt geregistreerd. De dll is dus al wel geladen volgens de foutmelding, maat dat is niet die in de system32 map. Kijk maar naar de melding, die wijst naar een heel ander pad. De foutmelding komt van RegSvr32, dat is het programma dat dll's registreert.
Ik zou die in dat pad staat even verplaatsen of renamen en vervolgens je project in VS opnieuw opbouwen. Wellicht dat VS dan op zoek gaat naar de correcte dll (weet ik niet zeker, ik ken VS niet goed genoeg).
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
ik zou gewoon even een volledig nieuw project aanmaken en zelf de API binnnen trekken van die mcHID.dll
heb zelf een VB08 app lopen met mchid.dll als onderdeel en werkt perfect.
declaratie's:
Declare Function hidConnect Lib "mcHID.dll" Alias "Connect" (ByVal pHostWin As Long) As Boolean
Declare Function hidDisconnect Lib "mcHID.dll" Alias "Disconnect" () As Boolean
Declare Function hidGetItem Lib "mcHID.dll" Alias "GetItem" (ByVal pIndex As Long) As Long
Declare Function hidGetItemCount Lib "mcHID.dll" Alias "GetItemCount" () As Long
Declare Function hidRead Lib "mcHID.dll" Alias "Read" (ByVal pHandle As Long, ByRef pData As Byte) As Boolean
Declare Function hidWrite Lib "mcHID.dll" Alias "Write" (ByVal pHandle As Long, ByRef pData As Byte) As Boolean
Declare Function hidReadEx Lib "mcHID.dll" Alias "ReadEx" (ByVal pVendorID As Long, ByVal pProductID As Long, ByRef pData As Byte) As Boolean
Declare Function hidWriteEx Lib "mcHID.dll" Alias "WriteEx" (ByVal pVendorID As Long, ByVal pProductID As Long, ByRef pData As Byte) As Boolean
Declare Function hidGetHandle Lib "mcHID.dll" Alias "GetHandle" (ByVal pVendoID As Long, ByVal pProductID As Long) As Long
Declare Function hidGetVendorID Lib "mcHID.dll" Alias "GetVendorID" (ByVal pHandle As Long) As Long
Declare Function hidGetProductID Lib "mcHID.dll" Alias "GetProductID" (ByVal pHandle As Long) As Long
Declare Function hidGetVersion Lib "mcHID.dll" Alias "GetVersion" (ByVal pHandle As Long) As Long
Declare Function hidGetVendorName Lib "mcHID.dll" Alias "GetVendorName" (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
Declare Function hidGetProductName Lib "mcHID.dll" Alias "GetProductName" (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
Declare Function hidGetSerialNumber Lib "mcHID.dll" Alias "GetSerialNumber" (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
Declare Function hidGetInputReportLength Lib "mcHID.dll" Alias "GetInputReportLength" (ByVal pHandle As Long) As Long
Declare Function hidGetOutputReportLength Lib "mcHID.dll" Alias "GetOutputReportLength" (ByVal pHandle As Long) As Long
Declare Sub hidSetReadNotify Lib "mcHID.dll" Alias "SetReadNotify" (ByVal pHandle As Long, ByVal pValue As Boolean)
Declare Function hidIsReadNotifyEnabled Lib "mcHID.dll" Alias "IsReadNotifyEnabled" (ByVal pHandle As Long) As Boolean
Declare Function hidIsAvailable Lib "mcHID.dll" Alias "IsAvailable" (ByVal pVendorID As Long, ByVal pProductID As Long) As Boolean
werkt overgens perfect op windows xp en windows 7 op beide is er geen registervermelding aangemaakt.
voor event afhandeling van binnenkomende data, connecten en disconnecten van device's zul je wel even de stream moeten overriden in je applicatie zodat je de message's kan afvangen.
Kevinoud
Een zak tuinaarde opescheuren
Oke ik zal een nieuw project maken.
Mischien heb je een werkende versie die je wilt delen ?
Ik heb een kleine basis van VB6 dus als ik iets werkends heb dan kan ik het op alle mogelijke manieren aanpassen en dat zal ik ook zeker doen.
probleem nu is die dll dus .. maar ik ga eerst even kijken wat een nieuw project uithaalt
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
ik heb wel werkende code zal zo eens wat posten hier.
dit is het argument wat je mee geeft aan hidConnect()
Dim appid As IntPtr = Me.Handle
stukje code wat nodig is voor voor de messagestream en de streamhandler:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
hidConnect(appid)
End Sub
stukje code om de MessageStream af te vangen en terug te geven aan de KernelStream
1.er een device wordt ingeplugd
2.er een device wordt uitgeplugd
3.er een datapackage binnen komt.
Dim msg_id As Integer = 32968
Const notify_plugged_device = 1
Const notify_unplugged_device = 2
Const notify_read = 4
Private Event Unplugged_device()
Private Event Plugged_device()
Private Event Read()
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.HWnd = appid Then
If m.Msg = msg_id Then
Select Case m.WParam.ToInt32
Case notify_plugged_device
RaiseEvent Plugged_device()
Case notify_unplugged_device
RaiseEvent Unplugged_device()
Case notify_read
RaiseEvent Read()
End Select
End If
End If
MyBase.WndProc(m)
End Sub
timmie
niet met me uitspraken(of opmerkingen) eens mail me.K8048 guide
Kevin is het nog gelukt?
hier nog wat tips:
- als je data gaat versturen zorg dan dat je als argment het eerste byte van de buffer mee geeft, let op die buffer moet je data+1 zijn het eerste byte is namelijk gereserveerd zie ook helpfile van mcHID.
- als je een DeviceUnplugged event hebt check dan of je device er nog aan zit, zo niet close dan de handle.
als er nog vragen zijn hoor ik het graag.