Datum: 25.01.2008 13:59
hallo Leute habe schon über ein jahr eine ausg.karte P8055-1 Velleman 2003 8bit aus 5bit ein 2 DA-Wandler 2 AD-wandler Pc-usb Demo Prog Funktioniert habe mich mit VB2005 beschäftigt. Leider konnte ich die DLL nicht einbinden oder es geht nicht zusatzfrage VB 2005 ser. RS232 Ausgabe klappt nur mit sieben Bit (keine textausg.) Ich brauche aber 8Bit Daten Ausgabe. ich brauche 8byte (daten) mache es aber jetzt mit 10 Byte (7 Bit pro Byte) ist auch nicht schwer aber nicht gut. bitte keine Hinweise zu engl.seiten. Danke
Datum: 25.01.2008 14:08
juppi wrote: > ich brauche 8byte (daten) > mache es aber jetzt mit 10 Byte (7 Bit pro Byte) > ist auch nicht schwer aber nicht gut. ???!!??? > bitte keine Hinweise zu engl.seiten. Verständlich...bei dem deutsch...
Datum: 25.01.2008 14:27
Niels Hüsken
>Verständlich...bei dem deutsch...
na und !?
fachlich hast'e was drauf oder bist'e nur trollig
Datum: 25.01.2008 14:30
Was, "na und" ??? Wenn man Hilfe erbittet, sollte man sich auch wenigstens ein wenig Mühe bei der Formulierung der Frage geben. Ich verstehe nämlich auch kein Wort von Deinem "Geschreibsel".
Datum: 25.01.2008 14:32
juppi wrote: >>Verständlich...bei dem deutsch... > na und !? Na Und?! Na du bist ja drollig. Also zum Einen dürfte hier dein Posting ziemlich fehlplatziert sein, zum Anderen habe ich von diesen drei Absätzen kein Wort verstanden.
Datum: 25.01.2008 14:50
@ Link (Gast) danke er hat's verstanden @Niels Hüsken (monarch35) @Bastler (Gast) dann werden es die verstehen welche das problem schon kennen. oder wenn es euch interessiet dan fragt konkret nach habt noch nicht mal gesagt wo das Posting gut plaziert ist!
Datum: 25.01.2008 14:57
Es gibt echt Leute, die sind in ihrer Dreistigkeit unerreichbar...*kopfschüttel* Muss echt schwer sein, so eine Suchmaschine zu bedienen.
Datum: 25.01.2008 15:31
Ja, denn sie kommt mit Abkürzungen nicht klar.
Datum: 25.01.2008 16:14
hallo @Niels Hüsken (monarch35) @Bastler (Gast) regt euch ab! wenn ihr in meine jahre kommt werdet ihr vieleicht gar nicht mehr schreiben können. ist nicht bös gemeint und jetzt weiter ? was habt ihr nicht verstanden (aber bitte nicht alles) diese kurzfassungen wurden von meinen leuten vor 35 J auch verstanden. in meisten fällen reicht es wenn die butter auf dem brot ist. Muß nicht noch geschmiert werden. also immer höflich
Datum: 25.01.2008 16:22
Eine Antwort kann gerne knapp gehalten sein, eine Frage aber wird dadurch erst recht unverständlicher. Außerdem ist es eine Frage der Umgangsformen, ob man als Fragender eine verständliche und höfliche Frage stellt, oder ob man einen unstrukturierten Batzen irgendwo hinrotzt und das mit einer überdimensionierten Erwartungshaltung koppelt. Und das ist keine Frage des Alters.
Datum: 25.01.2008 16:23
Ich bin höflich, aber direkt. Dreist ist es nach meiner Meinung, eine Frage zu formulieren ohne auf Verständlichkeit zu achten und dann auch noch pampig werden, wenn man nachfragt. Du sagtest: > ich brauche 8byte (daten) > mache es aber jetzt mit 10 Byte (7 Bit pro Byte) Das bezieht sich auf was? Wenn nicht mit VB, womit machst du es jetzt? > ist auch nicht schwer aber nicht gut. was soll nicht schwer sein? wieso nicht gut? Häh?
Datum: 25.01.2008 17:16
Hallo @Rufus t. Firefly (rufus) (Moderator wenn meine formulierung nicht exakt genug ist ,werde ich es versuchen zu verbessern. leider habe ich eine schreib-lese schwache und schwierigkeiten mit Händen und Fingern. zudem bin ich schon 15 J Rentner. Deshalb halte ich mich sehr kurz. für mich ist sehr schwer zu sehen wenn auf fachliche Fragen indirekt oder direkt auf meine schreibschwäche eingegangen wird. Ich bin der Meinung,das wer diese Probleme(in anfrage), schon hatte sollte Antworten. bekomme ich keine werde ich es anders versuchen. Ich halte es auch so,wenn ich es verstehe kann ich antworten, wenn nicht keine Antwort. Interessiert es mich werde ich konkret nachfragen. sollte ich mich falsch artikuliert haben und sich jemand beleidigt fühlt >>>endschuldige ich mich hiermit. jetzt @Niels Hüsken (monarch35 Ich will 8Byte seriell in Visual Basic ausgeben. es weden immer nur 7 Bit pro daten byte ausgegeben. Das sin 64 Bit daten die ich senden will. wenn aber pro byte nur 7 bit information enthalten sind das 8*7=56 Bit . ich brauche aber 64 --also muß ich noch 2byte mehr senden. 56+7=63 reicht nicht +7 -> 70 jetzt reicht es Da aber alles Bytweise im bei mir im Pc passiert wandle ich die 64 Bit (8 Byte) in 7er Gruppen um, dann kann ich sie senden. die Gegenstelle decodiert dies und macht daraus wieder ( byte (64 Bit) einfacher und schneller ist natürlich wenn ich nur 8 Byte empfange. > habe schon über ein jahr eine ausg.karte >P8055-1 Velleman 2003 >8bit aus >5bit ein >2 DA-Wandler >2 AD-wandler >Pc-usb >Demo Prog Funktioniert >habe mich mit VB2005 beschäftigt. >Leider konnte ich die DLL nicht einbinden oder es geht nicht was ist hier nicht verständlich vieleicht dies >Pc-usb Karte hat USB anschluß >Demo Prog Funktioniert zur Krte mit geliferte Software MfG
Datum: 25.01.2008 17:29
juppi wrote: > leider habe ich eine schreib-lese schwache und schwierigkeiten mit > Händen und Fingern. Wenn man sowas vorweg sagt, ist das überhaupt kein Problem. > zudem bin ich schon 15 J Rentner. Ich sehe keinen zusammenhang zwischen deinem Alter und einer Legasthenie. Auch MS kann man schon mit 30 bekommen. Deshalb find' ich die information jetzt etwas nutzlos... Ausserdem hilft es nicht über das Problem hinweg. Wenn du Fragen einstellst, die keiner Versteht, kannst du noch sooft erwähnen, wie alt du bist. Naja, schwamm drüber... > Ich will 8Byte seriell in Visual Basic ausgeben. > es weden immer nur 7 Bit pro daten byte ausgegeben. Sprichst du gerade von der seriellen Schnittstelle am PC? Oder vom K8055? Soweit ich weiss, sollte es eigentlich nirgens ein Problem sein, eine Schnittstelle von 7Bit auf 8Bit umzuschalten. > was ist hier nicht verständlich > vieleicht dies > >>Pc-usb Karte hat USB anschluß >>Demo Prog Funktioniert zur Krte mit geliferte Software Nein, der Absatz war verständlich. Den hab ich nicht gemeint.
Datum: 25.01.2008 18:01
Schau mal hier: http://www.velleman.be/downloads/0/user/usermanual... auf Seite 13. Beantwortet das Deine Frage zur DLL ?
Datum: 25.01.2008 18:08
Bastler wrote: > http://www.velleman.be/downloads/0/user/usermanual... > > auf Seite 13. Soweit ich weiss, kann VB2005 keinen nativen WindowsCode mehr erzeugen, sondern nur noch .NET. Ich glaube, für den abgebildeten Code braucht man VisualSTudio6 bzw Visual Basic 6.
Datum: 25.01.2008 18:10
Achso, wusste ich nicht. Ich programmiere nicht in Basic.
Datum: 25.01.2008 18:12
Bastler wrote:
> Achso, wusste ich nicht.
Ich bin auch kein Windowsprogrammierer. Ich stelle nur Vermutungen an.
Vieleicht könnte wer anders das mal bestätigen?
Datum: 25.01.2008 18:17
Ich hätte noch diesen Link zu bieten: https://secure.vividcluster.crox.net.au/jaycar2005...
Datum: 26.01.2008 09:20
@Bastler (Gast) Danke! da war ich schon vorher @Niels Hüsken (monarch35) Danke! das kannte ich habe es aber nicht zum laufen gebracht. deswegen suchte ich EINEN der mit VB2005 diese karte Ansteuert. diese karte hat eine sehr langsame befehlsverarbeitung, aber für eine Modelleisenbahn reichts. wer dies schon gemacht hat wird auch aus meiner Fragestellung schlau. >zusatzfrage >VB 2005 ser. RS232 Ausgabe klappt nur mit sieben Bit (keine textausg.) >Ich brauche aber 8Bit Daten Ausgabe. Ich will seriell mit VB2005 8Bit daten pakete ausgeben. Trotz allen möglichen versuchen in VB werden immer nur 7 Bit DatenPakete ausgegeben. Um mein Projekt schnell zu beenden mußte ich also mit 7 Bit DatenPaketen arbeiten und das ist nicht gut. @ Rufus t. Firefly (rufus) (Moderator) >Eine Antwort kann gerne knapp gehalten sein, eine Frage aber wird >dadurch erst recht unverständlicher. >Außerdem ist es eine Frage der Umgangsformen, ob man als Fragender eine >verständliche und höfliche Frage stellt, oder ob man einen >>unstrukturierten Batzen irgendwo hinrotzt und das mit einer >überdimensionierten Erwartungshaltung koppelt. >Und das ist keine Frage des Alters Meinen Freunden habe ich dies gezeigt. Sie sind der Meinung das die Frage für den Personenkreis welche kenntnis davon haben exakt genug ist. Zitat. Deine Antwort ist sachlich nicht Korekt. Ein spruch der schon vor 50 jahren galt >>>Es gibt keine dummen Fragen,nur dumme Antworten P.S. Ich fühle mich nicht angegriffen ! Habe schon zuviel erlebt. MfG juppi
Datum: 26.01.2008 12:09
juppi, du schreibst einige Male von "allen möglichen versuchen in VB". Es wäre IMHO einfacher, wenn du deine Versuche an deine Fragen anhängst. Dann könnte sich auch ein beliebiger (VB-)Programmierer der Sache annehmen, ohne dass er exakte Kenntnis von der P8055-DLL haben muss. Und um die Sache fett zu machen, könntest du einen Link zur Dokumentation oder zu Democode der P8055-DLL angeben. Kurz: Baue für potentielle Antworter so viele Hürden ab, wie es mit deinem Wissen geht. Das erhöht die Wahrscheinlichkeit, dass jemand deinen Weg (die Frage) verfolgt und sich nicht mit deinem Wegweiser (der Form der Frage) befasst.
Datum: 26.01.2008 13:31
@Stefan "stefb" B. (stefan) Im Forum pc-Programmierung k8055 Digital ports einzeln ansteuern? Autor: Stefan "stefb" B. (stefan) Datum: 20.05.2007 10:14 bist du das? da wurde nur die Karte in C++ angesteuert ich will es in VB.2005 und habe noch niemanden gefunden der dies macht. das ist doch verständlich?
Datum: 26.01.2008 13:48
juppi wrote:
> ich will es in VB.2005
Du musst auch die einzelen Posts verfolgen. Der Post von "Bastler" um
25.01.2008 18:17 enthält einen Link zu einem weiteren Forum.
Datum: 26.01.2008 13:50
juppi wrote: > Ich will seriell mit VB2005 8Bit daten pakete ausgeben. > > Trotz allen möglichen versuchen in VB werden immer nur 7 Bit > DatenPakete ausgegeben. Wenn du von der seriellen Schnittstelle des PCs sprichst, ist das Quatsch. Das Kontrollobjekt für die serielle Schnittstelle kann man ganz einfach auf 8Bit umstellen.
Datum: 26.01.2008 14:18
@Niels Hüsken (monarch35) ich verfolge jedes Argument ser. 8 bit ausg. in allen anderen Progsprachen sind ok. In VB2005 ist es auch einfach aber es geht nicht (Bei mir) quatsch gibt es nicht. Dann sage mir doch einfach wie es in VB2005 geht
Datum: 26.01.2008 14:21
Ich glaub ich frage mindestens zum fünften mal nach der Schnittstelle... WELCHE SCHNITTSTELLE IST GEMEINT?
Datum: 26.01.2008 14:30
Gut, ich rate einfach mal weiter und nehme an, du verwendest das
SerialPort-Objekt von VB2005.
Hast du dazu ein Objekt auf die Form gezogen oder instanzierst du das
Objekt im Code?
Dim port As IO.Ports.SerialPort = New IO.Ports.SerialPort("COM1", 9600,
parity.Even, 8, stopbits.One)
mit dieser Zeile initialisiert beispielsweise man COM1 auf 9600Bd mit
gerader Parität, 8 Datenbits, und einem stopbit.
Wenn du das Objekt auf die Form gezogen hast, findest du diese
Einstellungen in den Eigenschaften des Objektes.
Datum: 26.01.2008 14:35
habe ich alles gemacht leider habe ich die Quelle nich greifbar. will aber wider anfangen aber eben richtig. ich hatte damals auch fertige Beispiel Quellcods, welche ich dann angepast habe.
Datum: 26.01.2008 14:47
ich glaube , es bringt nichts. wollte einfach ein Primitivbeispiel (Quellcod) ein eingabewert wird als DatenByte 8Bit (nicht im text) über serielle ausgabe ausgegeben. wer's kann und will (aber ich glaube bis dahin habe ich es erledigt aber Danke an alle
Datum: 26.01.2008 16:06
juppi wrote: > @Stefan "stefb" B. (stefan) > > Im Forum > pc-Programmierung > k8055 Digital ports einzeln ansteuern? > > Autor: Stefan "stefb" B. (stefan) > Datum: 20.05.2007 10:14 > > > bist du das? > > da wurde nur die Karte in C++ angesteuert > ich will es in VB.2005 > und habe noch niemanden gefunden der dies macht. > > das ist doch verständlich? Sicher ist es verständlich. Dort handelt es sich allerdings um die K8055 und nicht um die P8055-1 Velleman 2003 wie in deiner Frage. Ich weiss nicht, inwieweit beide Karten bzw. die Doku und DLLs beider Karten identisch sind. Ich habe etliche Links zur Programmierung der K8055 auf meiner Benutzerseite hier im Wiki, aber von einer P8055 habe ich in deiner Frage zum ersten Mal gelesen. Auch die Suche nach P8055 auf der Velleman Seite (http://www.velleman.be/be/en/engine.php) bringt mich nicht an die Treiber bzw. Doku. Bei der .NET Geschichte fällt mir der existierende Treiber für K8055 (!) und für C# unter .NET ein (http://www.k8055-velleman.at.tt/). Den gab es früher frei als Download, inzwischen soll man den Autor per Email anschreiben. Ich schätze dieser Teiber kann auch in VB 2005 unter .NET hilfreich sein.
Datum: 27.01.2008 00:39
@Stefan "stefb" B. (stefan) ich bin nicht böse aber traurig das mir inkompitenz oder unkenntnis vorwirft. aber viele antworten ohne das sie kenntnis des problems haben. in einigen bildern erkennt mann eindeutig das K=P ist. Nicht wer am meisten schreit hat recht. Ich habe dieses Forum gewält weil es am aktivsten ist. merke aber das die toleranz fehlt. aber das kann sich verbessern. und dies geht auch an den chef!
Datum: 27.01.2008 02:14
Ich hoffe, du wirfst mir jetzt nicht vor, dass ich dir inkompitenz oder unkenntnis vorgeworfen hätte. Habe ich nämlich nicht. Geschrieen habe ich auch nicht; die Fettmarkierung sollte als Eyecatcher wirken. Für mich war der Schluss P8055 = K8055 nicht naheliegend. Umso besser, wenn es so ist, denn eine K8055 habe ich und kann in der Doku selbst nachsehen. VB 2005 (Express) habe ich nicht installiert und mag das wegen der Registrierungsorgie bei M$ auch nicht tun. Aber ich habe wenige Stellen im WWW gefunden, die wenigstens Quellcode haben (du weigerst dich ja beharrlich welchen rauszurücken ;-) Code 1 von mikey11 (Quelle: http://forum.velleman.be/viewtopic.php?t=147)
Option Strict Off
Option Explicit On
Friend Class Form1
Inherits System.Windows.Forms.Form
Dim DoNothing As Boolean
Dim n As Short
Private Declare Sub Version Lib "c:\8055\k8055d.dll" ()
Private Declare Function SearchDevices Lib "c:\8055\k8055d.dll" () As Integer
Private Declare Function SetCurrentDevice Lib "c:\8055\k8055d.dll" (ByVal CardAddress As Integer) As Integer
Private Declare Function OpenDevice Lib "c:\8055\k8055d.dll" (ByVal CardAddress As Integer) As Integer
Private Declare Sub CloseDevice Lib "c:\8055\k8055d.dll" ()
Private Declare Function ReadAnalogChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer) As Integer
Private Declare Sub ReadAllAnalog Lib "c:\8055\k8055d.dll" (ByRef Data1 As Integer, ByRef Data2 As Integer)
Private Declare Sub OutputAnalogChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer, ByVal Data As Integer)
Private Declare Sub OutputAllAnalog Lib "c:\8055\k8055d.dll" (ByVal Data1 As Integer, ByVal Data2 As Integer)
Private Declare Sub ClearAnalogChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer)
Private Declare Sub SetAllAnalog Lib "c:\8055\k8055d.dll" ()
Private Declare Sub ClearAllAnalog Lib "c:\8055\k8055d.dll" ()
Private Declare Sub SetAnalogChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer)
Private Declare Sub WriteAllDigital Lib "c:\8055\k8055d.dll" (ByVal Data As Integer)
Private Declare Sub ClearDigitalChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer)
Private Declare Sub ClearAllDigital Lib "c:\8055\k8055d.dll" ()
Private Declare Sub SetDigitalChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer)
Private Declare Sub SetAllDigital Lib "c:\8055\k8055d.dll" ()
Private Declare Function ReadDigitalChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer) As Boolean
Private Declare Function ReadAllDigital Lib "c:\8055\k8055d.dll" () As Integer
Private Declare Function ReadCounter Lib "c:\8055\k8055d.dll" (ByVal CounterNr As Integer) As Integer
Private Declare Sub ResetCounter Lib "c:\8055\k8055d.dll" (ByVal CounterNr As Integer)
Private Declare Sub SetCounterDebounceTime Lib "c:\8055\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
End Sub
Private Sub Connect_Click()
Dim CardAddress As Long
Dim h As Long
CardAddress = 0
'CardAddress = 3 - (Check1(0).Value + Check1(1).Value * 2)
' Check1(0) in der Zeile vorher funktioniert leider nicht bei mikey11
h = OpenDevice(CardAddress)
Select Case h
Case 0, 1, 2, 3
Label1.Text = "Card " + Str(h) + " connected"
Case -1
Label1.Text = "Card " + Str(CardAddress) + " not found"
End Select
End Sub
Private Sub Form_Terminate()
CloseDevice()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Connect.Click
Connect_Click()
End Sub
End Class
|
Code 2 von mikey11 (Quelle: http://forum.velleman.be/viewtopic.php?t=573&s...)
Option Strict Off
Option Explicit On
Imports System.Text
Imports System.Collections
Friend Class Form1
Inherits System.Windows.Forms.Form
Dim DoNothing As Boolean
Dim n As Short
Dim TotalCommands As Integer
Dim ScriptCommands As New Hashtable
Dim StopScript As Integer
Dim ValidInputs(0 To 100, 0 To 1) As String
Dim InputID As Integer
Dim CurrentLocation As Integer = 1
Dim InputLabels As String
Dim TotalValidInputs As Integer
Dim InputDetermine As String = ""
Dim OutputDetermine As String
Dim OutputPresent As String
Dim DigitalInputState As String
Private Declare Sub Version Lib "c:\8055\k8055d.dll" ()
Private Declare Function SearchDevices Lib "c:\8055\k8055d.dll" () As Integer
Private Declare Function SetCurrentDevice Lib "c:\8055\k8055d.dll" (ByVal CardAddress As Integer) As Integer
Private Declare Function OpenDevice Lib "c:\8055\k8055d.dll" (ByVal CardAddress As Integer) As Integer
Private Declare Sub CloseDevice Lib "c:\8055\k8055d.dll" ()
Private Declare Function ReadAnalogChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer) As Integer
Private Declare Sub ReadAllAnalog Lib "c:\8055\k8055d.dll" (ByRef Data1 As Integer, ByRef Data2 As Integer)
Private Declare Sub OutputAnalogChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer, ByVal Data As Integer)
Private Declare Sub OutputAllAnalog Lib "c:\8055\k8055d.dll" (ByVal Data1 As Integer, ByVal Data2 As Integer)
Private Declare Sub ClearAnalogChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer)
Private Declare Sub SetAllAnalog Lib "c:\8055\k8055d.dll" ()
Private Declare Sub ClearAllAnalog Lib "c:\8055\k8055d.dll" ()
Private Declare Sub SetAnalogChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer)
Private Declare Sub WriteAllDigital Lib "c:\8055\k8055d.dll" (ByVal Data As Integer)
Private Declare Sub ClearDigitalChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer)
Private Declare Sub ClearAllDigital Lib "c:\8055\k8055d.dll" ()
Private Declare Sub SetDigitalChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer)
Private Declare Sub SetAllDigital Lib "c:\8055\k8055d.dll" ()
Private Declare Function ReadDigitalChannel Lib "c:\8055\k8055d.dll" (ByVal Channel As Integer) As Boolean
Private Declare Function ReadAllDigital Lib "c:\8055\k8055d.dll" () As Integer
Private Declare Function ReadCounter Lib "c:\8055\k8055d.dll" (ByVal CounterNr As Integer) As Integer
Private Declare Sub ResetCounter Lib "c:\8055\k8055d.dll" (ByVal CounterNr As Integer)
Private Declare Sub SetCounterDebounceTime Lib "c:\8055\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
ClearAllDigital()
Dim CurrentLine As String = "1"
Dim Counter As Integer
'Dim TotalCommands As Integer
Counter = 1
Dim readerVar As IO.StreamReader
readerVar = IO.File.OpenText("c:\8055\default.vel")
While CurrentLine <> ""
CurrentLine = readerVar.ReadLine
ScriptCommands.Add(Counter, CurrentLine)
Counter = Counter + 1
End While
TotalCommands = Counter - 1
readerVar.Close()
ScriptBox.Text = ""
For Counter = 1 To TotalCommands
ScriptBox.Text = ScriptBox.Text + ScriptCommands(Counter) + ControlChars.CrLf
Next
'Determine the Line Numbers where the Inputs
'or Time Events Occur. Then the intervening lines are
'evaluated if they begin with the letter o for
'digital output, or d for attached devices
'These could be reused for multiple inputs, so they will be identified as
'belonging to a specific input
'Once the total Number of Inputs is determined, and the outputs assigned specifically
'the scan for activation can occur. In the case of Digital Inputs, the Velleman
'Board will be polled, for Timed events, the Current Time will be
'Compared to The Timed events.
For Counter = 1 To TotalCommands
InputDetermine = ScriptCommands(Counter)
OutputPresent = ScriptCommands(Counter + 1)
If Microsoft.VisualBasic.Left(InputDetermine, 1) = "I" And Microsoft.VisualBasic.Left(OutputPresent, 1) = "O" Then ValidInputs(CurrentLocation, 0) = (Counter)
If Microsoft.VisualBasic.Left(InputDetermine, 1) = "I" And Microsoft.VisualBasic.Left(OutputPresent, 1) = "O" Then ValidInputs(CurrentLocation, 1) = ScriptCommands(Counter)
If Microsoft.VisualBasic.Left(InputDetermine, 1) = "I" And Microsoft.VisualBasic.Left(OutputPresent, 1) = "O" Then TotalValidInputs = TotalValidInputs + 1
If Microsoft.VisualBasic.Left(InputDetermine, 1) = "I" Then CurrentLocation = CurrentLocation + 1
Next
'a list containing the Numbered Inputs that are valid exist
'ie. The inputs have at least one output or device indicated after the input
'The preceeding sequence loads the default script into the textbox
'but provides no error checking or exception handling. Make sure
'default.vel is where it says it is.
Dim i As Long
Dim Checked As Boolean
Dim Devices As Long
Checked = False
Devices = SearchDevices
If Devices Then
For i = 0 To 3
If (Devices And 2 ^ i) Then
If Not Checked Then
SetCurrentDevice(i)
Checked = True
CardStatus.Text = "Card " + Str(i) + " connected"
End If
Else
End If
Next i
End If
If Devices = 0 Then CardStatus.Text = "No Cards Connected"
'This preceeding sequence detects connected card, and displays
'the card address in the status bar otherwise no card is connected and
'the execute command will be disabled through checking Checked = false
End Sub
Private Sub Form_Terminate()
CloseDevice() 'Closes open card when the application is terminated
End Sub
'Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
' Connect_Click()
'End Sub
Private Sub OpenScriptButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenScriptButton.Click
End Sub
Private Sub ExecuteScript()
'ClearAllDigital() For some reason this command does not work.. go figure
WriteAllDigital(0) 'Ironically the writealldigital controls the outputs as a binary array where 255 is all 8 inputs turned on and 0 is all off
Dim Counter As Integer = 1
'Now we need to scan for an occurrence of each of the valid inputs
'The values returned by ReadAllDigital are as follows
'Input 1 = 1
'Input 2 = 2
'Input 3 = 4
'Input 4 = 8
'Input 5 = 16
'Therefore one statement can be used for checking if
'We recognize the squared value
Dim i As Integer = 0
DigitalInputState = ReadAllDigital
For i = 1 To 5
If DigitalInputState = 1 Then InputID = 1
If (DigitalInputState And 2 ^ i) Then InputID = i + 1
Next i
If InputID = 0 Then Return
'compare the pressed input to the valid inputs, then execute outputs or skips it over
Dim OutputStartLine As Integer
OutputDetermine = ""
Dim InputIDStr As String
Dim ParsedID As String
InputIDStr = InputID
ParsedID = "I" + InputIDStr
For i = 1 To TotalValidInputs
If ParsedID = Microsoft.VisualBasic.Left(ValidInputs(i, 1), 2) Then OutputStartLine = ValidInputs(i, 0)
Next i
Dim OutputID As String
Dim OutputNumber As Integer
Dim EndTimeChar As String = ""
OutputDetermine = ScriptCommands(OutputStartLine + 1)
'Process the Output instructions one at a time, making timers for events which
'will allow continued execution and scanning on the other inputs.
While Microsoft.VisualBasic.Left(OutputDetermine, 1) <> "I"
OutputID = Microsoft.VisualBasic.Left(Microsoft.VisualBasic.Mid(OutputDetermine, 2), 1)
OutputNumber = Convert.ToInt32(OutputID)
SetDigitalChannel(OutputNumber)
Dim TimeLeft As String
Dim Time As String
Dim TimeRemaining As Integer
Dim StripValue As Integer
TimeLeft = Mid(OutputDetermine, 4)
StripValue = Len(TimeLeft)
Time = Microsoft.VisualBasic.Left(TimeLeft, StripValue - 2)
TimeRemaining = Convert.ToInt32(Time)
System.Threading.Thread.Sleep(TimeRemaining)
ClearDigitalChannel(OutputNumber)
OutputStartLine = OutputStartLine + 1
OutputDetermine = ScriptCommands(OutputStartLine + 1)
End While
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ExecuteScript()
End Sub
End Class
|
Code von Hatticus (Quelle: http://www.codeprof.com/dev-archive/92/35-159-925423.shtm)
PublicClass Form1
' ClearDigitalChannel(1) turns switch #1 off -- and
' SetDigitalChannel(1) turns switch #1 on.
PrivateDeclareSub SetDigitalChannelLib"K8055D.DLL" (ByVal ChannelAsInteger)
PrivateDeclareSub ClearDigitalChannelLib"K8055D.DLL" (ByVal ChannelAsInteger)
PrivateSub CheckBox1_CheckedChanged(ByVal senderAs System.Object,ByVal eAs System.EventArgs)Handles CheckBox1.CheckedChanged
Dim cb_status = Me.CheckBox1.CheckState
SelectCase cb_status
Case 0
ClearDigitalChannel(1)
Case 1
SetDigitalChannel(1)
EndSelect
EndSub
EndClass
|
*Code von Mathias@Åland* (Quelle: http://www.elektronikforumet.com/forum/viewtopic.php?p=42) Ergänzungen von Khaki beachten.
Public Class Form1
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 Declare Sub Version Lib "k8055d.dll" ()
Private Declare Function SearchDevices Lib "k8055d.dll" () As Byte
Private Declare Function SetCurrentDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Byte
Const CARD_ADDRESS As Byte = 0 'Card address = 0
Private Sub test()
OpenDevice(CARD_ADDRESS) 'Connect to card
SetAllDigital() 'All digital outputs ON
OutputAllAnalog(50, 255) 'Analog output 1 = 50, analog output 2 = 255
System.Threading.Thread.Sleep(1000) 'Wait 1s
ClearAllDigital() 'All digital outputs OFF
ClearAllAnalog() 'Both analog outputs OFF
CloseDevice() 'Disconnect
End Sub
Private Sub testButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles testButton.Click
test()
End Sub
Private Sub exitButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles exitButton.Click
Me.Close()
End Sub
End Class
|
Code von Rod (Quelle: http://forum.velleman.be/viewtopic.php?t=367&h...)
Private Sub Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Send.Click
Dim checksum As Integer
Dim Relays As Byte
Relays = (TextBox2.Text)
checksum = (255 - ((((13 + 1 + Asc("B") + (Relays)) / 256) - Int((13 + 1 + Asc("B") + (Relays)) / 256)) * 256)) + 1
messagestring = Chr(13) & Chr(1) & "B" & (Relays) & Chr(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
SendSerialData(messagestring)
End Sub
Sub SendSerialData(ByVal data As String)
' Dim enc As Encoding = Encoding.Unicode
' Send strings to a serial port.
Using com1 As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort("COM1", 2400, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
' com1.Encoding = enc
com1.WriteLine(data)
End Using
End Sub
|
Interessant, da Rod auch auf ein Problem von Zeichen mit gesetztem 8. Bit in VB eingeht. Daraufhin hat VEL255 von Velleman eine ausführliche Liste mit Unterschieden zwischen VB6 und VB 2005 gepostet. Für mich lesen sich die Hinweise sehr plausibel und auf jeden Fall beachtenswert. Rod hat daraufhin seine Probleme (Richtung PC => K8055) so gelöst bekommen:
Sub SendSerialData(ByVal data As String)
Dim enc As Encoding = Encoding.GetEncoding(1252)
' Send strings to a serial port.
Using com1 As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort("COM1", 2400, IO.Ports.Parity.None, 8)
com1.Encoding = enc
com1.WriteLine(data)
End Using
End Sub
|
Datum: 27.01.2008 02:17
ADD: zumindest beim Code von Hatticus sind durch Copy&Paste ein paar Leerzeichen verloren gegangen. Also vor dem Testen kontrollieren.
Datum: 27.01.2008 11:17
Jetzt fühl ich mich aber angegriffen. Das man sich "Intoleranz" vorwerfen lassen muss, wenn man auf Misstände hinweist, ist das nächste dreiste Stück. Ich verabschiede mich aus diesem Thread. Vieleicht ein Tipp noch: @stefb: Ich glaube, juppi ist eher nach der suche nach einer Datei, die man sich runterladen und anklicken kann, worauf hin sich VB öffnet und nach dem Klick auf den "Run" button alles funktioniert. Hier Quelltext hinzuposten dürfte nutzlos sein.
Datum: 27.01.2008 14:48
Stefan "stefb" B. (stefan) @Niels Hüsken (monarch35) <Jetzt fühl ich mich aber angegriffen. Das man sich "Intoleranz" >vorwerfen lassen muss, wenn man auf Misstände hinweist, ist das nächste >dreiste Stück. Ich verabschiede mich aus diesem Thread. Das habe ich geschrieben. ich habe nicht dich gemeint,sonder mich selbst, wenn du kozentriert ließt. >ich bin nicht böse aber traurig das mir inkompitenz oder unkenntnis >vorwirft. >aber viele antworten ohne das sie kenntnis des problems >haben Du verabschiedest dich mit der überzeugung,ich mache MIST, obwohl du nicht richtig gelesen hast. dieses Problem kommt sehr oft vor. >Ich glaube, juppi ist eher nach der suche nach einer Datei, die man sich >runterladen und anklicken kann, worauf hin sich VB öffnet und nach dem >Klick auf den "Run" button alles funktioniert. Hier Quelltext >hinzuposten dürfte nutzlos sein. was ich zugeben muß ich hätte die Fragen getrennt stellen sollen. >>ansteuern K8055 /P8055 mit VB.2005 die software ist doch dabei,geht blos nicht >>COM.Ausgabe mit VB.2005 ich habe mich 4Tage mit VB beschäftigt (vor 6-8 Monaten) Grafigoberfläche vB2005 steuert über 7Bit datenausgabepaket C-Controll das bedeuteutet Pc steuert Modell Handsteuer steuert Modell (Grafiganzeige auf Pc) eigenstänige steuerung.vom steuergerät auto ablauf überwachter ablauf (Kinder kännen das modell bedienen) ich entwickle nur Funktionsmuster u.s.w. u.s.w. @ Stefan "stefb" B. (stefan) jetzt muß ich ersmal die sooftware suchen und das wird nicht einfach Danke an alle und dir besonders habe (dich ja auch gesucht)
Datum: 27.01.2008 14:52
nachsatz wie kann ich mich direkt mit einem Moderator in verbindung setzen @Rufus t. Firefly (rufus) (Moderator)
Datum: 27.01.2008 15:13
juppi: > >>ansteuern K8055 /P8055 mit VB.2005 > die software ist doch dabei,geht blos nicht Bei meiner K8055 war nur VB Democode dabei und kein VB .NET Democode. Beides hat Unterschiede, wie die vielen verzweifelten Anfragen udn die wenigen halbgaren Erfolgsmeldungen im Netz zeigen. > ich habe mich 4 Tage mit VB beschäftigt (vor 6-8 Monaten) Velleman hat eine DLL v2 nachgeschoben, die wesentlich verbessert war gegenüber der DLL auf meiner K8055 CD. Ich habe die DLL v2 *5/2007* als Download bei Velleman gezogen. In diesem Paket war überhaupt kein VB Democode, sondern nur Democode für Borland C (BC) und Visual C (VC). Ich denke aber, dass die hier enthaltene K8055D.DLL gegenüber der Version auf der CD vorzuziehen ist. Bei mir hatte es etliche Probleme behoben. Bei deiner Zeitangabe 6-8 Monate könnte es sein, dass du mit veralteten Treibern von der CD arbeitest und dass Du von einem Update der Treiber profitierst. > wie kann ich mich direkt mit einem Moderator in verbindung setzen > @Rufus t. Firefly (rufus) (Moderator) Auf die markierte Stelle in einem Posting des betreffenden klicken. Weiss aber nicht, ob Gäste das können.
Datum: 27.01.2008 15:38
@Stefan "stefb" B. ich will VB2005.net nur für kleinere Programme Nutzen damit ich auch für XP steuerprogramme entwickeln kann. was du schreibst wird richtig sein. jetzt muß ich etwas aktiv ordnen. nicht umsonst bin ich hier im Umfeld der bekannteste Hardware sammler, denn meine geräte mussen möglich kostenfrei sein. Dieses Forum gefällt mir(es ist aktuell)und ich werde mich später anmelden. @Rufus t. Firefly (rufus) (Moderator) Ich möchte nur nachfragen warum der Thread von mir gelöscht wurde,meine Freunde,Kollegen und ich fanden es nicht korekt. iHr dachte wohl ich melde mich nicht,mußte ausschlafen. danach schlagzeug 1,5 Std.,damit die Gelenke nicht unbeweglich werden, sonnst brauche ich bald biologische ersatzteile sage Ihm (kann jeden passieren. @Niels Hüsken (monarch35)
Datum: 27.01.2008 22:16
Wer auch immer hier einen Thread gelöscht hat, ich war es nicht. Entweder einer der anderen Moderatoren oder aber Andreas, der Forenbetreiber.
Datum: 27.01.2008 22:40
@Andreas @Rufus t. Firefly (rufus) (Moderator) 26.1.2008 ca. 10 Uhr noch vorhanden 26.1.2008 ca. 22 Uhr verschwunden "offTopic" es war thread "es gibt keine dummen Fragen, nur dumme Antworten" es wurde darin aber mehrmals hingewiesen, wenn keine Interesse, nicht antworten,dann verschwindet er allein. ich würde gern den Grund Erfahren, denn willkür ohne Begründung habe ich jahrzehnte erlebt. "offTopic" habe ich so verstanden das hier Themen gestellt werden die in die anderen nicht passen. ich behersche kein englisch, noch nicht einmal Deutsch richtig. Bin nur für ehrlichkeit und fairnis. MfG juppi
Datum: 28.01.2008 10:11
Ich habe ihn gelöscht. Grund: In diesem Thread gab es keinerlei neue Informationen, die der Sache dienlich sind. Die Fragestellung war m.E. völlig gleich, mit der selben Information bzw. der selben Nichtinformation. Die Antworten ändern sich nicht, wenn immer dieselbe Frage mit praktisch identischem Wortlaut gestellt werden. Damit ergibt sich, dass der Thread im Off Topic Bereich ein sinnloser Thread ist. Das 'Beste' was dir passieren kann, ist dass sowohl hier als auch dort Antworten kommen. Damit ist aber Information über mehrere Threads verstreut und damit ist nun wirklich keinem geholfen. Wir hatten das schon öfter, dass ein Fragesteller mehrere Threads zum gleichen Thema eröffnet hat. Für die Antworter ergibt sich dann die unangenehme Situation, dass in beiden Threads geantwortet wird und die Leute dieselben Informationen in beiden Threads geben und teilweise aneinander vorbeireden, weil kein Mensch mehr verfolgen kann, welche Information im jeweils anderen Thread schon gegeben wurde. Juppi: Wenn du das Gefühl hast, dass man dich nicht versteht, dann musst du deine Fragestellung umformulieren. Einen neuen Thread mit der identischen Fragestellung zu eröffnen bringt weder dich noch die Antworter weiter.
Datum: 28.01.2008 11:21
@Karl heinz Buchegger (kbuchegg) (Moderator) >>>dies ist o.k. ,hätte in 1-2 tagen darum gebeten. Mann kann es als schlechtes Beispiel,auch nur sperren. für mich ist dies auch ein zeichen einer guten Kontrolle, welche in Deutschland aus gesetzlichen Gründen notwendig ist. Nicht Gleichzusetzen einer Zensur. Veschiedene in offtopic sind hart an der Grenze. Da das Forum für Gäste auch offen ist, besteht die möglich keit ständig mit anderen Namen zu erscheinen, oder mit den namen eines Anderen. Dies förder aber die Aktualität des Forums. Ich habe alles erfahren ,was ich wollte. Immer nur eine Frage stellen (Problem),damit die fragen und antworten sich in den Verlauf nicht mischen. dadurch alles noch durcheinander wird. Auch die schlechteste Fragestellung ist ein Selbstläufer, sie wird sich nicht durch Nichtbeantwortung erledigen. Mein Gedankengang war: Wenn 1000 es lesen und einer der dies Problem kennt antwortet,ist es o.k. Es klappt eben nicht. >unstrukturierten Batzen irgendwo hinrotzt und das mit einer >überdimensionierten Erwartungshaltung koppelt. das sollte man von berufener Stelle nicht machen. ich werde weiter aktiv mitmachen, ich verstecke mich auch nicht. MfG juppi
Datum: 28.01.2008 11:30
@Karl heinz Buchegger (kbuchegg) (Moderator) vergessen Lösche diesen Thread in 1/2 tagen, es ist ein zu groses Durcheinander. einer der hier nur kurz reinschaut kann nicht klar kommen MfG juppi
Datum: 28.01.2008 11:35
Moderatoren können Threads nicht sperren, das kann nur Andreas, der Foren-Admin.
Datum: 28.01.2008 12:31
juppi wrote: > @Karl heinz Buchegger (kbuchegg) (Moderator) > > vergessen Lösche diesen Thread in 1/2 tagen, > es ist ein zu groses Durcheinander. > einer der hier nur kurz reinschaut kann nicht klar kommen > MfG > juppi Juppi, ohne dir persönlich nahetreten zu wollen - ich bin damit nicht einverstanden. "klar kommen" - Wer sich eine Diskussion nicht durchlesen und verstehen kann, soll es lassen oder nachfragen. Ich habe hier ganz klein bisschen Arbeit rein gesteckt und möchte auch in Zukunft von dieser Arbeit profitieren z.B. wenn ich mich z.B. aufraffe mit diesem neumodischen .NET Geraffel anzufangen. Dazu habe ich einen den Link hierher in meiner Benutzerseite eingerichtet so dass ich selbst den Kram ohne 1 h googeln wiederfinde und die essentielle Sachen als Kopie habe (viele Seiten verwittern im Netz) sowie - last but not least - bei nächster Gelegenheit andere juppis hierher verweisen kann.
Datum: 28.01.2008 12:55
@Stefan "stefb" B. (stefan) hallo wenn du es so siehst, ich habe kein Problem wenns weitergeht. >>Mann kann es als schlechtes Beispiel,auch nur sperren. Es ist doch ein gutes Beispiel,das man immer gegenseitig etwas lernen kann. >1 h googeln wiederfinde ehe ich antworte geht meistens erst die suche los, damit man eine kleine information über die Post Partner hat. bin noch nicht mal 2monate im Netz. vB2005 unreg.(also alles alt) ich glaube jetzt wissen wir ,warum so viele unklarheiten gab und gibt.
Datum: 29.01.2008 13:31
@Stefan "stefb" B. (stefan) Bin weiter dran hat noch nicht geklappt. wenn du so vorgehst kennst du mich ein bischen. ich verstecke mich nicht ,wie ich bei manchen bemerken könnte Gruß
Datum: 05.02.2008 11:24
Gruß >zusatzfrage >VB 2005 ser. RS232 Ausgabe klappt nur mit sieben Bit (keine textausg.) >Ich brauche aber 8Bit Daten Ausgabe. Ich möchte auch in VB.Net einen Datenstring senden. Bit 7 kommt aber immer unverändert an. Ich kann bis 127Dez senden . Will ich z.B. 128 senden kommt auf der Empfängerseite nur 63 an. Will ich z.B. 255 senden kommt auf der Empfängerseite auch nur 63 an. oben den Quellcod verstehe ich nicht. Hat nicht jemand einen kurzen Cod. Hoffendlich versteht mich einer?? Danke
Datum: 05.02.2008 11:31
Verwendest Du möglicherweise einen vorzeichenbehafteten 8-Bit-Datentyp?
Datum: 05.02.2008 12:30
probst wrote: > Ich möchte auch in VB.Net einen Datenstring senden. > Bit 7 kommt aber immer unverändert an. Du brauchst nicht alles an Code, was oben steht. Interessant ist dieser Codeabschnitt von Rod:
Sub SendSerialData(ByVal data As String)
Dim enc As Encoding = Encoding.GetEncoding(1252)
' Send strings to a serial port.
Using com1 As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort("COM1", 2400, IO.Ports.Parity.None, 8)
com1.Encoding = enc
com1.WriteLine(data)
End Using
End Sub
|
Datum: 05.02.2008 18:26
Hallo
Public Class Form1
'Codeabschnitt von Rod:
Sub SendSerialData(ByVal data As String)
? Dim enc As Encoding = Encoding.GetEncoding(1252)
' Send strings to a serial port.
Using com1 As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort("COM1", 2400,
IO.Ports.Parity.None, 8)
com1.Encoding = enc
com1.WriteLine(data)
End Using
End Sub
End Class
Fehler
Encoding ist nicht deffiniert
Datum: 05.02.2008 18:42
Hi, juppi: Dieses Forum ist einfach unhöflicher als viel andere. Damit muss man leben, wenn man hier



