| |
VB.NET - Ein- und UmsteigerLReal 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] | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
| 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 |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|