USB-Zugriff bewirkt Neustart
Übersicht

StephanBetreff: USB-Zugriff bewirkt Neustart |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute,
Ich habe mir dieses USB-Interface gekauft. Dazu war eine CD mit Treibern und einem Beispielcode in Visual Basic. Mit VB funktioniert alles super und absolut problemfrei. Nun habe ich die Funktionsdeclarationen von VB in eine .decls geschrieben und einige Funktionen in BB-Code geschrieben. Beim ausführen startet aber jedes mal mein Rechner neu. Weiß jemand wie man das verhindern kann? Vielen Dank Stephan VB Code: Zitat: Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, _ ByVal lpSecurityAttributes As Long, _ ByVal dwCreationDisposition As Long, _ ByVal dwFlagsAndAttributes As Long, _ ByVal hTemplateFile As Long) As Long Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, _ lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, _ ByVal nOutBufferSize As Long, lpBytesReturned As Long, _ lpOverlapped As Any) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Public Const GENERIC_READ = &H80000000 'Public hinzugefügt, damit ich auch in Form1 damit spielen kann Public Const GENERIC_WRITE = &H40000000 Public Const FILE_SHARE_WRITE = &H2 Public Const FILE_SHARE_READ = &H1 Public Const OPEN_EXISTING = &H3 Dim sFileName As String Dim htemp As Long Dim lIn As Long, lInSize As Long, lOut As Long, lOutSize As Long, lSize As Long Dim lTemp As Long Sub USB_IO() sFileName = "\\.\CompuLABusb_0" hgDrvrHnd = CreateFile(sFileName, GENERIC_WRITE Or GENERIC_READ, FILE_SHARE_WRITE Or FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0) lTemp = DeviceIoControl(hgDrvrHnd, 4&, lIn, lInSize, lOut, lOutSize, lSize, gOverlapped) htemp = CloseHandle(hgDrvrHnd) End Sub Function RdPort0() As Integer lIn = 0 * 256 + 20 lInSize = 2 lOutSize = 2 USB_IO RdPort0 = (lOut / 256) And 255 End Function Function RdPort1() As Integer lIn = 1 * 256 + 20 lInSize = 2 lOutSize = 2 USB_IO RdPort1 = (lOut / 256) And 255 End Function Sub WrPort0(Wert) lIn = 65536 * Wert + 0 * 256 + 21 lInSize = 3 lOutSize = 1 USB_IO End Sub Sub WrPort1(Wert) lIn = 65536 * Wert + 1 * 256 + 21 lInSize = 3 lOutSize = 1 USB_IO End Sub Meine .decls: Code: [AUSKLAPPEN] .lib "kernel32.dll"
API_CreateFileA%(lpFileName$,dwDesiredAccess%,dwShareMode%,lpSecurityAttributes%,dwCreationDisposition%,dwFlagsAndAttributes%,hTemplateFile%):"CreateFileA" API_DeviceIoControl%(hDevice%,dwIoControlCode%,lpInBuffer,nInBufferSize%,lpOutBuffer,nOutBufferSize%,lpBytesReturned%,lpOverlapped%):"DeviceIoControl" API_CloseHandle%(hObject%):"CloseHandle" Mein Programm hat es beim letzten Ausführen durch den Neustart gelöscht. ![]() ![]() |
||
ICQ: 252-242-607 |
![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich kann dir leider nicht helfen, aber ich such grad n günstigen controller, und der sieht nett aus. Würdest du den empfehlen? (Jetzt halt nit mit blitz^^) | ||
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc |
Stephan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, der ist absolut super. Ich hab schon einige Andere probiert und die haben nich so toll funktioniert. Da brauchte man erst große Schaltungen usw.. Hier benötigt man nur einen 6MHz Quartz, einen 7.5K Widerstand und einen 100n Kondensator und alles funzt perfekt XD. Naja, auser die Ansteuerung mit BB, aber ich arbeite an einer Lösung. | ||
ICQ: 252-242-607 |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn in VB kein ByVal vor dem Parameter steht ist es ByRef | ||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuchs damit:
Code: [AUSKLAPPEN] .lib "kernel32.dll"
apiCreateFile%(lpFileName$, dwDesiredAccess%, dwShareMode%, lpSecurityAttributes%, dwCreationDisposition%, dwFlagsAndAttributes%, hTemplateFile%) : "CreateFileA" apiDeviceIOControl%(hDevice%, dwIOControlCode%, lpInBuffer*, nInBufferSize%, lpOutBuffer*, nOutBufferSize%, lpBytesReturned*, lpOverlapped*) : "DeviceIoControl" apiCloseHandle%(hObject%) : "CloseHandle" Code: [AUSKLAPPEN] Const DEVICE_NAME = "\\.\CompuLABusb_0"
Const INVALID_HANDLE_VALUE = -1 Const GENERIC_READ = $80000000 Const GENERIC_WRITE = $40000000 Const FILE_SHARE_WRITE = $2 Const FILE_SHARE_READ = $1 Const OPEN_EXISTING = $3 Global Driver% Global InBuffer%, OutBuffer%, BytesReturned%, Overlapped% Driver = apiCreateFile(DEVICE_NAME, GENERIC_WRITE Or GENERIC_READ, FILE_SHARE_WRITE Or FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0) If Driver = INVALID_HANDLE_VALUE Then DebugLog("Unable to load driver") End EndIf InBuffer = CreateBank(3) OutBuffer = CreateBank(2) BytesReturned = CreateBank(4) Overlapped = CreateBank(4) Print("Read Port0: " + ReadPort0()) Print("Read Port1: " + ReadPort1()) Print("Write Port0: " + WritePort0(123)) Print("Write Port1: " + WritePort1(123)) apiCloseHandle(Driver) End Function ReadPort0%() Local Success% PokeByte(InBuffer, 1, 0) PokeByte(InBuffer, 0, 20) Success = apiDeviceIOControl(Driver, 4, InBuffer, 2, OutBuffer, 2, BytesReturned, Overlapped) If Success = 0 Then Return -1 Return PeekByte(OutBuffer, 1) End Function Function ReadPort1%() Local Success% PokeByte(InBuffer, 1, 1) PokeByte(InBuffer, 0, 20) Success = apiDeviceIOControl(Driver, 4, InBuffer, 2, OutBuffer, 2, BytesReturned, Overlapped) If Success = 0 Then Return -1 Return PeekByte(OutBuffer, 1) End Function Function WritePort0%(Value%) PokeByte(InBuffer, 2, Value) PokeByte(InBuffer, 1, 0) PokeByte(InBuffer, 0, 21) Success = apiDeviceIOControl(Driver, 4, InBuffer, 3, OutBuffer, 1, BytesReturned, Overlapped) If Success = 0 Then Return -1 Return 0 End Function Function WritePort1%(Value%) PokeByte(InBuffer, 2, Value) PokeByte(InBuffer, 1, 1) PokeByte(InBuffer, 0, 21) Success = apiDeviceIOControl(Driver, 4, InBuffer, 3, OutBuffer, 1, BytesReturned, Overlapped) If Success = 0 Then Return -1 Return 0 End Function Problem bei Blitz ist, dass man bei Pointer nicht Null übergeben kann. Bspw. kann ich an lpSecurityAttributes* nicht Null übergeben, sondenr muss lpSecurityAttributes% mit 0 nutzen. |
||
vertex.dreamfall.at | GitHub |
![]() |
PlasmaBetreff: ui |
![]() Antworten mit Zitat ![]() |
---|---|---|
das sieht ja erstmal nett aus , schreib mal ob es klappt <- interesse zeig | ||
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm, ich habe eben mit Blitzbasic auf einen USB-stick zugegriffen, auf den zunächst in einer Schleife gewartet wird (mittels Filetype). Programm gestartet, USB stick reingesteckt, Neustart...
Hatte aber keine .dlls oder sonstiges^^ |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group