free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
en we zijn weer een grote stap verder.
Ik heb nu bijna dagelijks contact met van de mensen die libusb gemaakt heeft en die ook weet hoe het werkt !
Nu is er een exact duplicaat van het C testprogramma.
Libusb is nu ook aangepast om de STDcalls te kunnen doen.
Er zijn ook een aantal 'helper' functies bijgekomen om het pointer-gemanipuleer op te lossen. De DLL resolved dat nu naar simpeler structuren ( geen linked lists meer )
Dit maakt dat ook voor andere programmeertalen ( waaronder ook C ) het een flink stuk eenvoudiger geworden is.
Ik heb nog flink wat documentatiewerk maar we komen er uit.
De class draait nu ook al properkers met errorhandling en alles. af en toe kwam er nog een crash omdat de DLL geen assumpties maakt. een foute parameter is 'mort subite' ...
de VB class lost die problemen op.
stukje code :
dim my_usbdevice as new USB_device
Private Sub Command1_Click()
Dim index
index = 0
UsbInit
textbox.Text = ""
While my_usbdevice.Start(index) <> 0
msg " Device : " & index
msg " Product ID : (" & Hex$(my_usbdevice.PID) & ") : " & my_usbdevice.ProductID
msg " Vendor ID : (" & Hex$(my_usbdevice.VID) & ") : " & my_usbdevice.VendorID
msg " Serial nr : " & my_usbdevice.Serial
my_usbdevice.Release
index = index + 1
Wend
End Sub
sub Msg (txt)
text1.text=text1.text & txt$ & vbcrlf
end Msg
je kan nu openen zonder vid en vip te kennen
openen met alleen een vid , of openen met vid en vip
de strings en alle descriptors kan je zo aan
en rollen er mooi uit. je kan de ganse usb structuur bewandelen.
nu nog de andere kant ....
initialisatiecode voor een nest processoren.
ik mik op PIC , 8051 ( atmel )
met voorbeeldekes in assembler en picbasic en eventueel c ...
juist genoeg code om de usb structuur op te zetten en endpoints aan te maken . de rest doe je dan zelf.
( usb is dan echt een 'pijp' aan de pc kant : vind dit device , en blaas zoveel bytes naar dat endpoint , of haal zoveel bytes van dat endpoint op.
en langs de nadere kant krijg je een interrupt als er iets toekomt of opgehaald wordt. en tstaat in een buffer.
als er andere targets zijn ... laat maar weten
hopelijk kunnen we hierna al die seriele poorten in de vuilbak smijten, en wordt het maken van usb devices even simpel als een weerstandje aan een ledje hangen...
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
met VB niet nee. met C(rap) en C(rap)++ misschien later nog wel 
(TIS OM TE LACHEN HE !. zie dat ze hier weer beginnen flamen ... . Ik weet het, ik moet dringend eens een echte programmeertaal leren. Heeft er nog iemand het originele boek van Kemeny en Kurtz over de Basic met lijnnumers ?
, Anders is Basica van IBM wat in de ROm zat ook goed hoor. Kzal ook al vast maar zien om 'edlin' geinstalleerd te krijgen onder windows. kwestie van een goeie editor te hebben (VI is voor watjes))
enfin. de boel bolt nu.
er wordt nog ene beetje gesleuteld aan de DLL ( versie opvragen moeten we nog implementeren ) , alsook aan de Class
hier staat ie :
http://www.uploadarchief.net/files/download/USB%20vb.zip
Opgelet. Zorg dat je de laatste LibUSB en SYS driver hebt van Sourceforge.
Om Miserie te vermijden : het gaat om deze :
http://sourceforge.net/project/showfiles.php?group_id=78138&packag…
en je hebt de EXE file nodig ( libusb-win32-filter-bin-20060827.exe )
Lanceer die installer. Dit zorgt dat je de laatste Libusb.DLL en LibUSB.SYS hebt en dat de services geinstalleerd zijn en lopen.
Daarnaa kan je de boel zo lopen.
als je ene programma maakt met die VB code moet je ook libusbvb0.dll meegeven. dat is de wrapper library die alle pointer-shuffling doet ( de cdecl naar STDcall translatie )
om compatibility redenen kan de libusb0 niet aangepast worden ( dat spul moet blijven werken voor cygwin en al die andere vanaf linux geporteerde tools, en die werken alleen met cdecl calls. )
Dus daarvoor is die wrapper nodig.
Als je de Class gaat gebruiken in je project moet je zowel libusb.bas als usb_device.cls toevoegen aan je vb project.
ik ga nog een mini_libusb.bas maken die allen usbinit bevat (das de enige call die je nodig hebt buiten de class) ik kan die niet aanroepen vanuit de class omdat ik daarmee alle handles voor andere instances zou vernietigen. wat maakt dat je niet met meer dan 1 device teglijk zou kunnen bezig zijn. usb_init mag maar 1 keer aangeroepen worden in je programma.
En dan gaan we dat ook nog eens porteren naar VB2005 ...
Martijn v
KIS!!: Keep It Simple
'k krijg een beetje kriebels van al die DLL versies.
of is dit de laatste?
oeh, c kan ik (nog) niet,
Op 10 januari 2007 04:01:11 schreef free_electron:
, Anders is Basica van IBM wat in de ROm zat ook goed hoor.
basicA ? 'k heb een boekje:
Progcursus Mcirosoft BASIC (ook voor GW basis en BASICA)
geschreven door Nok van veen.
Eerste druk: 06-1983
voor oa CommodorePC 10, Tulip sysstem1, Corona, Philips P2500. ma die zal het wel nie weze 
zeg f_e, je had toch zo weinigtijd voor de CO_scoop? en dan ga je een beetje zitten proggen, zeg da ken nie hoor 