Dat heen en weer doorgeven van info kan dat op basis van polling of wil je aan beide zijden met interrupts werken? Om hoeveel bytes gaat het en met welke intervallen? Houdt je PIC zich alleen maar bezig met iets eens in de zoveel tijd iets te meten? Waar komen de events van de PC vandaan? Enzovoorts, enzovoorts.
Gebruik eens andere termen dan events en vertel in normaal nederlands wat er gebeurt.
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 1 februari 2010 11:25:28 schreef BenZ:
Met welke taal (talen) werk je (zowel op je PC als de PICfirmware)? Het Microchip-raamwerk gaat uit van C.
Er is ook een raamwerk in Jal beschikbaar, en op Olin Lathrop heeft een framework voor assembler (met zijn eigen preprocessor).
Videomodulator
AKA Naftebakje @Tweakers.net --- Zonder dwarsliggers geen spoor
Iets wat ook leuk is om eens mee te experimenteren is de "bit whacker", eenmalig een .hex in je 18F45xx programmeren en je hebt naast de USB bootloader een simpel systeem om via een virtuele seriële poort over USB allerhande commando's te sturen. Bekijk het eens, kan zijn dat het niet voldoet maar het is waarschijnlijk een handige basis om van te vertrekken.
@BenZ Dit moet een soort toegangscontrole / alarmcentrale worden
bv met pincode/kaartlezer deuren openen dus eerst kijken wie waar binnenmag deze gebeurtenissen worden opgeslagen op de computer om later te kijken wie er binnen is geweest .
verlichting sturen
hadv
Just find out what you like and let it kill you
In Proton heb je de EasyHID USB wizard. Dat kun je toch gebruiken?
[Bericht gewijzigd door hadv op (12%)]
@BenZ Met visual basic denk ik (dit is het enigste wat ik voor handen heb )
@hadv EasyHID USB wizard daar ga ik even naar kijken dit kan dan rechtstreeks van de pic of heb ik hier een ft232rl voor nodig? rechtsreeks dus
hadv
Just find out what you like and let it kill you
Easy Hid bevat ook generatoren voor de PC kant (VB5, Delphi5 en VC6). Dus waarom het moeilijer maken...
Let op! De default naam van de directory waar de generatoren in staat is fout. Dit moet zijn (ProtonIde\Plugin\Easy-HID\)"CodeGenerators". Als je dat niet verandert doettie het niet.
Ben even met EasyHID USB wizardbezig geweest maar ik kan bij 4de pagina niks invullen bij usb device compiler en bij application compiler.
Als ik dan op next druk krijg ik de laatste pagina project generation en daar staat dan:
generation errors
easyHID Error: unable to create project INI file
hadv
Just find out what you like and let it kill you
Als je nou mijn vorige post hebt gelezen, en daarnaar hebt gehandeld, dan zou dit probleem moeten zijn opgelost.
hadv
Just find out what you like and let it kill you
Bij mij lostte dat het probleem wel op.
Overigens had ik deze aanpassing op het online forum gevonden.
[Bericht gewijzigd door hadv op (17%)]
Kevinoud
Een zak tuinaarde opescheuren
dit topic is pas een maand oud en aangezien mijn probleem hier behoorlijk relevant is kwa problemen met de easyHID dacht ik dat hij hier wel bij kon.
Ik kan het namelijk nergens vinden.
ERROR: 'Error in Device Info Section of the PPI file.!
Ik kan hem niet aanklikken en hij geeft geen verdere info ik ben nu een uurtje aan het rommelen maar kom er niet uit overigens kan ik "de PPI file" niet vinden is dit een bestand ?
Ik heb het programma van de easyhid nog NIET aangepast op het kristal na 48 > 20 Mhz, als ik dit terug verander naar 20 dan maakt dat niets uit.
Dank bij voorbaat.
Kevinoud
Een zak tuinaarde opescheuren
ohja ik heb hem gevonden maar wat zou er fout zijn het is gewoon de PPI file van de nieuwste protonide het is een dikke 1300 regels code -_-'
Iemand enig idee
Dit is het pic device info gedeelde als ik het goed begrijp
PICmicro Information Definitions
[INFOSTART]
CORE=16
MAXRAM=2048
MAXCODE=32768
PORTS=5
ADC=10
ADRES=10
EEPROM=256
RAM_BANKS=8
BANKA_END=0X005F
UART=1
USB=1
FLASH_WRITE=1
MSSP=2
BLOCK=32 ; Size of the Code Memory Write Segment (in Bytes)
ERASE=64 ; Size of the Code Memory Erase Segment (in Bytes)
Debug=1
[INFOEND]
[Bericht gewijzigd door Kevinoud op (57%)]
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.