vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
LReal Zahl 
Autor: Stefan1510
Datum: 27.06.07 12:12

Hallo an alle...

Ich komm mit dem lesen aus meinem Stream noch nicht richtig klar. Ich schicke via Tcp eine LReal Zahl, die ich voher in einen Bytestream umgewandelt habe. Diese Sache schicke ich aller 1 Sekunde mit send zum Client.
Jetzt will ich auf der anderen Seite die 8 Byte wieder in eine Zahl darstellen, die in einer Textbox angezeigt wird.
Folgenden Code habe ich dabei angewandt. Erstmal will ich die Werte anzeigen lassen und mich dann mit einer bestimmten message, von der While-Schleife verabschieden.(tetzt ist es noch eine Endlosschleife). Kann mir da jemand eine Tipp geben, wie ich da rangehen kann. Folgenden Code, habe ich geschrieben, doch noch kein Erfolg..

Danke fuer jede Hilfestellung

Stefan

 
elocity in the box
Dim stream As NetworkStream = Client_Simotion.GetStream()

Dim Buffer As Byte()

Dim receiveData As [String] = [String].Empty

Dim bytes As Int32

Buffer = New [Byte](256) {}



While True

'read the bytes
bytes = 0

bytes = stream.Read(Buffer, 0, Buffer.Length)

receiveData = System.Text.Encoding.ASCII.GetString(Buffer, 0, bytes)

txt_speed.Text = receiveData

End While

/code]
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LReal Zahl 
Autor: Melkor
Datum: 28.06.07 14:30

eine LReal Zahl

Was dat denn?

die ich voher in einen Bytestream umgewandelt habe

und wie?

receiveData = System.Text.Encoding.ASCII.GetString(Buffer, 0, bytes)

Hier liest du einfach ASCII-Zeichen ein. Ist das richtig? Warum die Daten nicht einfach als Bytes übertragen? Dann muss nichts umgewandelt werden. Und was bedeutet "noch kein Erfolg"? Fehlermeldung? Erklärung was passiert? Irgendetwas?

Those people who think they know everything are a great annoyance to those of us who do - Isaac Asimov

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LReal Zahl 
Autor: Stefan1510
Datum: 28.06.07 18:31

Hallo Melkor, ich will die LREAL (8Byte) in ein Bytearray schreiben und es dann mit der VB Anwendung in ein Textfeld ausgeben lassen. Ich brauch eigentlich nur eine Funktion die mir wieder aus den 8 Byte eine LREAL zahl macht und sie dann als Zahlenwert in meiner Textbox darstelllt.

Ich dacht diese Funktion erfuellt diesen Zweck:
receiveData = System.Text.Encoding.ASCII.GetString(Buffer, 0, bytes)

Wie du ja sicher merkst, bin ich noch recht neu in diesem Gebiet, wenn du mir da einen Tipp in dieser Beziehung geben kannst, waere ich dir dankbar.

Nochmal meine herangehensweise,
1. LREAL in Bytearray schreiben, verschicken ueber TCP
2. Bytestream 8Byte wieder als LREAL darstellen und Zahl an der Textbox ausgeben lassen

Danke fuer jeden Tipp
Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LReal Zahl 
Autor: Melkor
Datum: 28.06.07 18:38

Nein, mach's mit BitConverter oder BinaryWriter/Reader.

Those people who think they know everything are a great annoyance to those of us who do - Isaac Asimov

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LReal Zahl 
Autor: Stefan1510
Datum: 28.06.07 18:50

Melkor, mit dem reinschreiben habe ich keine Probleme, aber wie kann ich dann an der Gegenstation sagen, die naechsten 8 Byte sind von einer LReal, da ist ja ein Teil von der Mantise und ein anderer Teil von der Zahl an sich. Ich kann wenn das einfacher ist, auch erstmal die Zahl in eine DInt umwandeln, da faellt dann die Sache mit der Mantise und so weg.
Mein Hauptproblem ist die zusammensetzun am Ende...

Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LReal Zahl 
Autor: Melkor
Datum: 28.06.07 19:38

Ich kann dir gar nicht sagen wie du deine Umwandlung rückgängig machst ohne genau zu wissen wie du es machst. Aber sowieso was du machst ist kaum optimal. Es gibt schon die notwendigen Klassen, wie ich erwähnt habe. So einfach ist das wirklich:
        Dim d1 As Double = 3.1415
        Dim bytes() As Byte = BitConverter.GetBytes(d1)
 
        Dim d2 As Double = BitConverter.ToDouble(bytes, 0)

Those people who think they know everything are a great annoyance to those of us who do - Isaac Asimov

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LReal Zahl 
Autor: Stefan1510
Datum: 29.06.07 05:44

Danke Melkor, das hat jetzt soweit geklappt. Kann ich dich mal nach ner guten Docu im Netz fragen. Es muessen mal bissel grundlegende Fragen geklaert werden. Zum Beisp. bei ner Win Form, git es da nun ein Main oder ist die Public Class Form 1 mein Main.
Danke fuer den Tipp und die gute Hilfe
Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LReal Zahl 
Autor: Melkor
Datum: 29.06.07 08:37

Es gibt immer eine Sub Main(), ist mal aber versteckt. Allerdings für ein ganz neues Thema soltest du besser einen neuen Thread starten. Die Mods hier hätten das lieber.

Those people who think they know everything are a great annoyance to those of us who do - Isaac Asimov

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LReal Zahl 
Autor: Stefan1510
Datum: 29.06.07 09:16

Ok Melkor, da werde ich diesen Thread mal schliessen.

EIne letzte Frage habe ich noch, dass dieses Thema betrifft. Ich will jetzt ein Wert in derTextbox eintragen, der dann an meinen Gegenpartner geschickt werden soll.

     ' Buffer to store the Bytes
        Dim data_send(1024) As Byte
        Dim s As Integer = 0
        Dim bytes As Integer
 
        ' Werte von der TB holem
        Dim pos As Int32 = txt_setspeed.Text
        Dim speed As Int32 = txt_setpos.Text
 
 
        data_send = (BitConverter.GetBytes(pos))
        data_send = (BitConverter.GetBytes(speed ))
Ich weis jetzt nicht wie ich die Sachen richtig in das data_send Array bekomme, ich wollte das mit einer Art Memcopy funktion machen, aber die gibt es nicht. Kannst Du mir da mal einen Tipp geben. Und weil ich schon an den kleinesten Sachen haenge, woher weist du das alles, kannst du mir mal die Infoquelle nennnen, da kann ich auch mal schauen. Danke
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LReal Zahl 
Autor: Melkor
Datum: 29.06.07 09:39

Leider sind die BitConverter Methoden nicht sehr orthogonal. .GetBytes() liefert ein Bytearray. .ToWasImmer() schreibt in ein bestehendes Array.

Am einfachsten schickst du die Daten getrennt, die kommen ohnehin zusammen an, weil TCP/IP immer einige Millisekunden wartet (es sei denn man hat die Option ausgeschaltet). Sowieso solltest du prüfen wieviel Bytes angekommen sind (was du anscheinend momentan nicht machst). Wesentlich zuverlässiger erfindet man ein Übertragungsprotocol mit Steuerfeldern, die zeigen welche Daten vorhanden sind, oder verwendet ein Standardprotocol wie Http.

Wenn du ein Buffer zusammenbauen willst geht's besser mit BinaryWriter, die direkt in dein NetworkStream schreiben kann. Sonst musst du die einzelnen Bytes in einer Schleife kopieren.

Those people who think they know everything are a great annoyance to those of us who do - Isaac Asimov

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel