Forum: PC-Programmierung K8055 Experimentierboard mit Visual Basic ansteuern


von Paul (Gast)


Lesenswert?

Ich sitze hier vor meinem neuen K8055 Experimentierboard, und irgendwie 
will das ganze nicht so wie ich will.
Die Demoprogramme habe ich installiert, undd ie funktionieren auch, 
damit kann ich alles wunderbar ansteuern. Wenn ich dann aber in Visual 
Basic anfange zu programmieren, dann gibt er mir eine Fehlermeldung aus, 
dass er das Programm so nicht fertigstellen kann. Er bricht also nicht 
beim Ausführen, sondern noch davor ab.
Die Fehlermeldung sieht so aus:

1.
*******
Error  1  The "ResolveManifestFiles" task failed unexpectedly.
System.ArgumentException: Illegal characters in path.
   at 
System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String 
[]  str)
   at 
System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissio 
nAccess  access, AccessControlActions control, String[] pathListOrig, 
Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
   at 
System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAcces 
s  access, String[] pathList, Boolean checkForDuplicates, Boolean 
needFullPath)
   at System.IO.Path.GetFullPath(String path)
   at 
Microsoft.Build.Tasks.Deployment.ManifestUtilities.Util.RemoveDuplicateI 
tems(ITaskItem[]  items)
   at 
Microsoft.Build.Tasks.ResolveManifestFiles.set_NativeAssemblies(ITaskIte 
m[]  value)  K8055 testprogramm
********

2.
********
Error  2  The 
"NativeAssemblies=@(NativeReferenceFile);@(_DeploymentNativePrerequisite 
)"  parameter for the "ResolveManifestFiles" task is invalid.  K8055 
testprogramm
********

3.
********
Error  3  The "ResolveManifestFiles" task could not be initialized with 
its input parameters.  K8055 testprogramm
********


Die k8055d.dll befindet sich im Projektordner.
Das Programm habe ich nach Informationen, wie ich sie im Netz gefunden 
habe gemacht, mehrere Quellen haben das so als lauffähiges Programm 
angegeben. Es ist sehr simpel, da es erstmal nur zum test dienen soll, 
ob das so klappt:

Public Class Form1

    ' k8055.dll declarations...
    Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal 
CardAddress As Integer) As Integer
    Private Declare Sub CloseDevice Lib "k8055d.dll" ()
    Private Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal 
Channel As Integer) As Integer
    Private Declare Sub ReadAllAnalog Lib "k8055d.dll" (ByRef Data1 As 
Integer, ByRef Data2 As Integer)
    Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal 
Channel As Integer, ByVal Data As Integer)
    Private Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As 
Integer, ByVal Data2 As Integer)
    Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal 
Channel As Integer)
    Private Declare Sub SetAllAnalog Lib "k8055d.dll" ()
    Private Declare Sub ClearAllAnalog Lib "k8055d.dll" ()
    Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel 
As Integer)
    Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As 
Integer)
    Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal 
Channel As Integer)
    Private Declare Sub ClearAllDigital Lib "k8055d.dll" ()
    Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal 
Channel As Integer)
    Private Declare Sub SetAllDigital Lib "k8055d.dll" ()
    Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal 
Channel As Integer) As Boolean
    Private Declare Function ReadAllDigital Lib "k8055d.dll" () As 
Integer
    Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal 
CounterNr As Integer) As Integer
    Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr 
As Integer)
    Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal 
CounterNr As Integer, ByVal DebounceTime As Integer)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles MyBase.Load
        OpenDevice(3)
        SetAllDigital()
        CloseDevice()
    End Sub
End Class


Ich hoffe mir kann da jemand helfen, ich würde gerne anfangen damit 
rumzuprogrammieren.

Gruß, Paul

von thomas (Gast)


Lesenswert?

hi,
ich hab zwar diese Karte bis jetzt nur in VB6 angesprochen, aber probier 
mal folgendes:

führe die funktionen  OpenDevice(3), SetAllDigital(), CloseDevice() 
nicht im FormLoad aus, sondern platziere einen Button auf die Form und 
mach das ganze beim "Button Click". Da siehst du schon mal, ob deine 
Anwendung überhaupt startet.

Wenn nicht, dann mach ein neues Projekt. das sollte ansich schon mal 
laufen.
Dann nach und nach den code reinschreiben und immer wieder starten. dann 
siehst du, an welcher stelle es kracht.

Ach ja, bist du dir sicher, das du die Cardadress 3 öffnen 
willst(kannst)?
Schau mal im Demoprogramm nach, da wird angezeigt, welche Cardadress 
verwendet wird. Vieleicht liegt da ja schon der Fehler.

Viel erfolg

thomas

von Paul K. (matrixq)


Lesenswert?

Der Tipp mit dem neuen Projekt hat geholfen. Das ist zwar mit dem 
Programm davor zu 100% identisch, aber jetzt läuft es.
Sehr merkwürdig.

Vielen Dank

von Torben (Gast)


Lesenswert?

Man muss nicht unbedingt vorher gucken welche CardAdress die Richtige 
ist.
Einfach über ne Schleife ansteuern:
dim z as integer
for z = 0 to 3
opendevice(z)
next z

oder wenn man es anzeigen lassen will:
for z = 0 to 3
if opendevice(z)=z then MsgBox(z)
next z

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.