Hallo Zusammen,
VT24 hat mir die Notwendigen Dateien in Version 1.2 zukommen lassen. Ihr könnt das Zip-Paket hier (9,7KB) Downloaden.
Fragen bitte an Arndt (VT24) stellen.
mfg
Ralf
Ausgänge
-
- Beiträge: 6281
- Registriert: 09.11.2002 02:00:47
Re: Ausgänge
Zuletzt geändert von F(R)S-Bauer am 12.01.2014 17:00:20, insgesamt 1-mal geändert.
Verstehe die IT, heute: IoF -> Internet over Fax, eine Deutsch Erfindung...
Re: Ausgänge
Hallo zusammen,
bevor Ihr Euch alle auf die DLL stürzen: derzeit funktioniert (wie ich leider inzwischen feststellen musste) nur die Abfrage von float-Werten. Ich arbeite an der Korrektur, kann aber ein Bisschen dauern, da ich beruflich recht eingebunden bin. Ich gebe Bescheid, wenn dann V1.3 draußen ist.
Gruß,
Arndt
bevor Ihr Euch alle auf die DLL stürzen: derzeit funktioniert (wie ich leider inzwischen feststellen musste) nur die Abfrage von float-Werten. Ich arbeite an der Korrektur, kann aber ein Bisschen dauern, da ich beruflich recht eingebunden bin. Ich gebe Bescheid, wenn dann V1.3 draußen ist.
Gruß,
Arndt
Re: Ausgänge
Hallo zusammen,
kurzer Zwischenstand: Da ich in letzter Zeit sehr viel um die Ohren hatte, hat es etwas länger gedauert, die DLL zu überarbeiten. Inzwischen ist die neue DLL fertig gestellt und befindet sich im Dauertest, damit es keine Überraschungen gibt. Sobald die Tests erfolgreich abgeschlossen sind, gebe ich Bescheid.
Gruß,
Arndt
kurzer Zwischenstand: Da ich in letzter Zeit sehr viel um die Ohren hatte, hat es etwas länger gedauert, die DLL zu überarbeiten. Inzwischen ist die neue DLL fertig gestellt und befindet sich im Dauertest, damit es keine Überraschungen gibt. Sobald die Tests erfolgreich abgeschlossen sind, gebe ich Bescheid.
Gruß,
Arndt
Re: Ausgänge
Hallo zusammen,
nach längerem Testen steht jetzt die neue Version der TCP-DLL auf Ralfs Zusizone zum Download bereit.
Im Zuge der neuen Version hat sich auch die Funktion etwas geändert, daher bitte in der Kurzanleitung und der Header-Datei nachlesen.
Sollten Euch Fehler auffallen, gebt mir bitte Bescheid.
MfG Arndt
nach längerem Testen steht jetzt die neue Version der TCP-DLL auf Ralfs Zusizone zum Download bereit.
Im Zuge der neuen Version hat sich auch die Funktion etwas geändert, daher bitte in der Kurzanleitung und der Header-Datei nachlesen.
Sollten Euch Fehler auffallen, gebt mir bitte Bescheid.
MfG Arndt
- Sebastian N.
- Beiträge: 419
- Registriert: 07.10.2011 06:24:53
- Kontaktdaten:
Re: Ausgänge
Hi!
Ich versuche derzeit mir selbst ein kleines Programm für die Druckluftanzeige zu basteln. Auch wenn VB dafür wohl nicht die beste Lösung ist, habe ich es mittlerweile geschafft dass ich 2 drehende Zeiger habe (Überlagerung für 2 Zeiger geht leider nicht so einfach):
Nun will aber die TCP Übertragung, so wie ich sie bereits fürmein 1042 Fahrpult in Verwendung habe, nicht funktionieren. Den Teil für den Arduino habe ich entfernt, ich will die Daten ja lediglich auslesen. Es verbindet sich auch zum Server, Zusi zeigt auch die angeforderten Variablen an. Lediglich werden keine Werte in den Programmvariablen gespeichert. Vielleicht kann sich das mal jemand kurz ansehen, ich finde kann den Fehler leider nicht finden.
Vielen Dank!
Gruß,
Sebastian
Ich versuche derzeit mir selbst ein kleines Programm für die Druckluftanzeige zu basteln. Auch wenn VB dafür wohl nicht die beste Lösung ist, habe ich es mittlerweile geschafft dass ich 2 drehende Zeiger habe (Überlagerung für 2 Zeiger geht leider nicht so einfach):
Nun will aber die TCP Übertragung, so wie ich sie bereits fürmein 1042 Fahrpult in Verwendung habe, nicht funktionieren. Den Teil für den Arduino habe ich entfernt, ich will die Daten ja lediglich auslesen. Es verbindet sich auch zum Server, Zusi zeigt auch die angeforderten Variablen an. Lediglich werden keine Werte in den Programmvariablen gespeichert. Vielleicht kann sich das mal jemand kurz ansehen, ich finde kann den Fehler leider nicht finden.
Code: Alles auswählen
'Die Grundstruktur des Programms geht auf Andreas Karg (TCP-Übertragung) und Jens Eggert aus dem Zusi-Forum zurück
'und wurde für die Diplomarbeit um einige Funktionen, sowie über eine Übertragung vom Arduino zum PC erweitert.
Imports System
Imports System.IO.Ports
Imports System.Threading
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports Zusi_Datenausgabe
Imports System.Math
' ZusiTCPDemoApp
' This example shows basic usage of Andreas Karg's Zusi TCP interface for .Net.
' It is published under the GNU General Public License v3.0. Base your own work on it, play around, do what you want. :-)
'
'
' Using the interface requires three steps:
' - Write one or more handler methods
' - Create a ZusiTcpConn object, passing basic parameters
' - Tell your ZusiTcpConn object what measures you want to receive
'
' Everything else is explained below.
' ZusiTCPDemoAppVBA
' Translated C#-Project into VisualBasic.
'Declaration
Public Class CMainWindow
'Es folgen die Bytes für die Werteausgabe an den Arduino:
Dim L As Byte
Dim B As Byte
Dim H As Byte
' Deklaration des "ZusiTcpConn" Objekts:
Private MyTCPConnection As ZusiTcpConn
Public CMainWindow()
Public Sub New()
InitializeComponent()
'Die Connection Class wird erstellt:
'Hier wird der Name des Programms definiert, wie es im TCP Server aufscheint.
MyTCPConnection = New ZusiTcpConn( _
"Druckluft_1044", _
ClientPriority.High, _
New ReceiveEvent(Of Single)(AddressOf HandleIncomingData), _
Nothing, _
Nothing _
)
' The name of this application (Shows up on the server's list)
' The priority with which the server should treat you
' A delegate method for the connection class to call when it receives float data (may be null)
' A delegate method for the connection class to call when it receives string data (may be null)
' A delegate method for the connection class to call when it receives byte[] data (may be null)
'Hier werden nun jene Informationen aufgelistet, die von Zusi angefordert werden sollen.
'Eine Liste mit den Zuordnungen der IDs findet sich im Anhang.
MyTCPConnection.RequestData(2562) 'Druck Hauptluftleitung
MyTCPConnection.RequestData(2563) 'Druck Bremszylinder
MyTCPConnection.RequestData(2564) 'Druck HL Behälter
End Sub
'Es folgt die Verbindungsroutine, nach dem Klicken auf den "Verbinden" Button
Private Declare Sub keybd_event Lib "user32" ( _
ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long _
)
Private Sub BtnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConnect.Click
'Ist die Verbindung getrennt,...
If (MyTCPConnection.ConnectionState = Zusi_Datenausgabe.ConnectionState.Disconnected) Then
' ...wird versucht...
Try
' ...eine Verbindung mit den im Hauptfenster eingetragenen Daten für Hostname und Port herzustellen:
MyTCPConnection.Connect(TbServer.Text, Convert.ToInt32(TbPort.Text))
' Ist die Verbindung erfolgreich, ändert sich die Beschriftung des Buttons auf "Trennen".
BtnConnect.Text = "Trennen"
' Kann keine Verbindung hergestellt werden,
Catch ex As ZusiTcpException
' ... wird eine Fehlermeldung angezeigt.
MessageBox.Show(String.Format("Ein Fehler trat bei der Verbindung auf: {0}", ex.Message))
End Try
' Wenn bereits verbunden ist oder ein Error auftrag, wird die Verbindung zurückgesetzt:
Else
MyTCPConnection.Disconnnect()
' und der Button wird wieder auf "Verbinden" gesetzt
BtnConnect.Text = "Verbinden"
End If
End Sub
'Wenn Daten ankommen, wird dieses Subprogramm aufgerufen:
Private Sub HandleIncomingData(ByVal dataSet As DataSet(Of Single))
If Serial.IsOpen Then 'Die Werte werden über die TCP Verbindung ausgelesen und in lokale Variablen gespeichert:
Select Case dataSet.Id
Case 2562 'HL (Hauptluftleitung)
H = CByte(Math.Round(dataSet.Value, 0))
Case 2563 'Druck Bremszylinder
B = CByte(Math.Round(10 * dataSet.Value, 0))
Case 2564 'HB (Hauptluftbehälter)
L = CByte(Math.Round(10 * dataSet.Value, 0))
Label3.Text = B
End Select
End If
End Sub
Gruß,
Sebastian
Zuletzt geändert von Sebastian N. am 12.07.2014 13:01:55, insgesamt 1-mal geändert.
-
- Beiträge: 182
- Registriert: 29.06.2006 16:53:54
- Wohnort: KBS 786 (Remsbahn) km 14,4
Re: Ausgänge
Hallo Sebastian,
ich kenne jetzt den Code für die Arduino Übertragung nicht. Mir scheint aber das dein Problem vermutlich in HandleIncomingData() liegt. Dort gibt es die Abfrage "if Serial.IsOpen". Da sieht so aus, ob hier noch ein Fragment aus der Arduino Übermittlung drin ist und er schaut, ob eine serielle Verbindung zum Arduino besteht.
Probiere es mal ohne dieses if.
Hoffe geholfen zu haben
Michael
ich kenne jetzt den Code für die Arduino Übertragung nicht. Mir scheint aber das dein Problem vermutlich in HandleIncomingData() liegt. Dort gibt es die Abfrage "if Serial.IsOpen". Da sieht so aus, ob hier noch ein Fragment aus der Arduino Übermittlung drin ist und er schaut, ob eine serielle Verbindung zum Arduino besteht.
Probiere es mal ohne dieses if.
Hoffe geholfen zu haben
Michael
In der Hoffnung durch vorhandene Rechtschreibfehler nicht die Diskussion vom eigentlichen Thema abzulenken.
Re: Ausgänge
Hallo Sebastian,
wo hast du denn den Code-Schnipsel her?
Im Grunde ist es eine recht alte Version von Andras' TCP-Dll. Aktuellere Versionen (mit aktuelleren Beispielen) gibt es in seiner Aktuellen Version auf Git.
Ich weiß jetzt nicht genau, wo das keybd_event herkommt, aber ich bin mir unsicher, ob hier nicht ein Fehler mit den Datentypen vorliegt: Bei VB ist Integer eine 16-Bit-Varriable und Long eine 32-Bit, bei VB.Net ist bereits Integer eine 32-Bit-Varriable.
Die Tatsächliche Ursache deines Problemes sehe ich - wie Michael - auch eher am "If Serial.IsOpen".
Du kannst normalerweise einfach einen Haltepunkt in deinen Code setzten, und dann Schritt für Schritt Durchdebuggen, ob der Code erfolgreich durchläuft.
Und du kannst natürlich auch C# verwenden, wenn dir VB.Net nicht zusagt.
F. Schn.
wo hast du denn den Code-Schnipsel her?
Im Grunde ist es eine recht alte Version von Andras' TCP-Dll. Aktuellere Versionen (mit aktuelleren Beispielen) gibt es in seiner Aktuellen Version auf Git.
Ich weiß jetzt nicht genau, wo das keybd_event herkommt, aber ich bin mir unsicher, ob hier nicht ein Fehler mit den Datentypen vorliegt: Bei VB ist Integer eine 16-Bit-Varriable und Long eine 32-Bit, bei VB.Net ist bereits Integer eine 32-Bit-Varriable.
Die Tatsächliche Ursache deines Problemes sehe ich - wie Michael - auch eher am "If Serial.IsOpen".
Du kannst normalerweise einfach einen Haltepunkt in deinen Code setzten, und dann Schritt für Schritt Durchdebuggen, ob der Code erfolgreich durchläuft.
Und du kannst natürlich auch C# verwenden, wenn dir VB.Net nicht zusagt.
F. Schn.
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat
- Sebastian N.
- Beiträge: 419
- Registriert: 07.10.2011 06:24:53
- Kontaktdaten:
Re: Ausgänge
Da hätte ich aber auch selber drauf kommen können, herzlichen Dank. Jetzt funktioniert es wunderbar!
Lediglich die Darstellung ist teilweise etwas unruhig: Video
Lediglich die Darstellung ist teilweise etwas unruhig: Video
Zuletzt geändert von Sebastian N. am 12.07.2014 19:27:25, insgesamt 1-mal geändert.