Verfasst: 13.08.2006 17:36
Und ich hab mich schon die ganze Zeit über das C und die 2 gewundert 
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Wieso? Funktioniert das nicht was du zuvor geschrieben hattest? Ist ja nichtBura.Tino hat geschrieben:Sorry das ich jetzt erst antworte. Hatte viel zu tun.
@msh
Jetzt funktioniert es.
Ich werde wohl eher Deinen Code nehmen. Da weiß ich wenigstens wie er funktioniert.
Code: Alles auswählen
; Source generiert durch DLL2PBLib
; Copyright 2005 by Thomas Schulz (TS-Soft)
; Globale Variablen deklaration
Global ClearAllAnalog.l
Global ClearAllDigital.l
Global ClearAnalogChannel.l
Global ClearDigitalChannel.l
Global CloseDevice.l
Global OpenDevice.l
Global OutputAllAnalog.l
Global OutputAnalogChannel.l
Global ReadAllAnalog.l
Global ReadAllDigital.l
Global ReadAnalogChannel.l
Global ReadCounter.l
Global ReadDigitalChannel.l
Global ResetCounter.l
Global SearchDevices.l
Global SetAllAnalog.l
Global SetAllDigital.l
Global SetAnalogChannel.l
Global SetCounterDebounceTime.l
Global SetCurrentDevice.l
Global SetDigitalChannel.l
Global Version.l
Global WriteAllDigital.l
; Init-Funktion
ProcedureDLL K8055D_DLL_Init()
Shared DLL.l
DLL = LoadLibrary_("K8055D.DLL")
If DLL
ClearAllAnalog = GetProcAddress_(DLL, "ClearAllAnalog")
ClearAllDigital = GetProcAddress_(DLL, "ClearAllDigital")
ClearAnalogChannel = GetProcAddress_(DLL, "ClearAnalogChannel")
ClearDigitalChannel = GetProcAddress_(DLL, "ClearDigitalChannel")
CloseDevice = GetProcAddress_(DLL, "CloseDevice")
OpenDevice = GetProcAddress_(DLL, "OpenDevice")
OutputAllAnalog = GetProcAddress_(DLL, "OutputAllAnalog")
OutputAnalogChannel = GetProcAddress_(DLL, "OutputAnalogChannel")
ReadAllAnalog = GetProcAddress_(DLL, "ReadAllAnalog")
ReadAllDigital = GetProcAddress_(DLL, "ReadAllDigital")
ReadAnalogChannel = GetProcAddress_(DLL, "ReadAnalogChannel")
ReadCounter = GetProcAddress_(DLL, "ReadCounter")
ReadDigitalChannel = GetProcAddress_(DLL, "ReadDigitalChannel")
ResetCounter = GetProcAddress_(DLL, "ResetCounter")
SearchDevices = GetProcAddress_(DLL, "SearchDevices")
SetAllAnalog = GetProcAddress_(DLL, "SetAllAnalog")
SetAllDigital = GetProcAddress_(DLL, "SetAllDigital")
SetAnalogChannel = GetProcAddress_(DLL, "SetAnalogChannel")
SetCounterDebounceTime = GetProcAddress_(DLL, "SetCounterDebounceTime")
SetCurrentDevice = GetProcAddress_(DLL, "SetCurrentDevice")
SetDigitalChannel = GetProcAddress_(DLL, "SetDigitalChannel")
Version = GetProcAddress_(DLL, "Version")
WriteAllDigital = GetProcAddress_(DLL, "WriteAllDigital")
EndIf
EndProcedure
; End-Funktion
ProcedureDLL K8055D_DLL_End()
Shared DLL.l
FreeLibrary_(DLL)
EndProcedure
; Allgemeine Funktionen
ProcedureDLL.l ClearAllAnalog()
ProcedureReturn CallFunctionFast(ClearAllAnalog)
EndProcedure
ProcedureDLL.l ClearAllDigital()
ProcedureReturn CallFunctionFast(ClearAllDigital)
EndProcedure
ProcedureDLL.l ClearAnalogChannel(a.l)
ProcedureReturn CallFunctionFast(ClearAnalogChannel,a)
EndProcedure
ProcedureDLL.l ClearDigitalChannel(a.l)
ProcedureReturn CallFunctionFast(ClearDigitalChannel,a)
EndProcedure
ProcedureDLL.l CloseDevice()
ProcedureReturn CallFunctionFast(CloseDevice)
EndProcedure
ProcedureDLL.l OpenDevice(a.l)
ProcedureReturn CallFunctionFast(OpenDevice,a)
EndProcedure
ProcedureDLL.l OutputAllAnalog(a.l,b.l)
ProcedureReturn CallFunctionFast(OutputAllAnalog,a,b)
EndProcedure
ProcedureDLL.l OutputAnalogChannel(a.l,b.l)
ProcedureReturn CallFunctionFast(OutputAnalogChannel,a,b)
EndProcedure
ProcedureDLL.l ReadAllAnalog(a.l,b.l)
ProcedureReturn CallFunctionFast(ReadAllAnalog,a,b)
EndProcedure
ProcedureDLL.l ReadAllDigital()
ProcedureReturn CallFunctionFast(ReadAllDigital)
EndProcedure
ProcedureDLL.l ReadAnalogChannel(a.l)
ProcedureReturn CallFunctionFast(ReadAnalogChannel,a)
EndProcedure
ProcedureDLL.l ReadCounter(a.l)
ProcedureReturn CallFunctionFast(ReadCounter,a)
EndProcedure
ProcedureDLL.l ReadDigitalChannel(a.l)
ProcedureReturn CallFunctionFast(ReadDigitalChannel,a)
EndProcedure
ProcedureDLL.l ResetCounter(a.l)
ProcedureReturn CallFunctionFast(ResetCounter,a)
EndProcedure
ProcedureDLL.l SearchDevices()
ProcedureReturn CallFunctionFast(SearchDevices)
EndProcedure
ProcedureDLL.l SetAllAnalog()
ProcedureReturn CallFunctionFast(SetAllAnalog)
EndProcedure
ProcedureDLL.l SetAllDigital()
ProcedureReturn CallFunctionFast(SetAllDigital)
EndProcedure
ProcedureDLL.l SetAnalogChannel(a.l)
ProcedureReturn CallFunctionFast(SetAnalogChannel,a)
EndProcedure
ProcedureDLL.l SetCounterDebounceTime(a.l,b.l)
ProcedureReturn CallFunctionFast(SetCounterDebounceTime,a,b)
EndProcedure
ProcedureDLL.l SetCurrentDevice(a.l)
ProcedureReturn CallFunctionFast(SetCurrentDevice,a)
EndProcedure
ProcedureDLL.l SetDigitalChannel(a.l)
ProcedureReturn CallFunctionFast(SetDigitalChannel,a)
EndProcedure
ProcedureDLL.l Version()
ProcedureReturn CallFunctionFast(Version)
EndProcedure
ProcedureDLL.l WriteAllDigital(a.l)
ProcedureReturn CallFunctionFast(WriteAllDigital,a)
EndProcedure
Also bin ich jetzt dabei mein eigenes Demo-Programm zu schreiben! Kann es sein das mein Programm manchmal abstürzt wenn ich zu viele Befehle an das Board schicke?OpenLibrary(0, "K8055D.dll")
CallCFunction(0, "OpenDevice",0)
OpenWindow(0,x,y,500,200,#PB_Window_ScreenCentered | #PB_Window_SystemMenu,"ONNYS ROBOTER STEUERUNG")
CreateGadgetList(WindowID())
ButtonGadget(0,400,5,100,20,"Set all digital")
ButtonGadget(1,400,30,100,20,"Clear all digital")
ButtonGadget(2,400,60,100,20,"TEST")
ButtonGadget(3,400,90,100,20,"Würfel")
Frame3DGadget(10,5,5,200,100,"Analog Output-Channels")
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_EventGadget
Select EventGadgetID()
Case 0
CallCFunction(0, "SetAllDigital")
Case 1
CallCFunction(0, "ClearAllDigital")
Case 2
CallCFunction(0, "SetDigitalChannel",1)
Delay(100) : CallCFunction(0, "ClearAllDigital")
CallCFunction(0, "SetDigitalChannel",2)
Delay(100) : CallCFunction(0, "ClearAllDigital")
CallCFunction(0, "SetDigitalChannel",3)
Delay(100) : CallCFunction(0, "ClearAllDigital")
CallCFunction(0, "SetDigitalChannel",4)
Delay(100) : CallCFunction(0, "ClearAllDigital")
CallCFunction(0, "SetDigitalChannel",5)
Delay(100) : CallCFunction(0, "ClearAllDigital")
CallCFunction(0, "SetDigitalChannel",6)
Delay(100) : CallCFunction(0, "ClearAllDigital")
CallCFunction(0, "SetDigitalChannel",7)
Delay(100) : CallCFunction(0, "ClearAllDigital")
CallCFunction(0, "SetDigitalChannel",8)
Case 3
CallCFunction(0, "ClearAllDigital")
For a = 0 To Random(6)
CallCFunction(0, "SetDigitalChannel",Random(6))
Next
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
CloseLibrary(0)
End