www.mikrocontroller.net

Forum: PC-Programmierung HEX senden mit vb 2008


Autor: danczi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Habe ein problem! ich habe mir ein beispiel code heruntergelden von:
http://www.activevb.de/tipps/vbnettipps/tipp0071.html
und wenn man auf den button klickt dann wir nur ein ascii code gesendet!
So jetzt meine frage: Wie muss ich den code umändern damit ich jetzt 
HEX-Zahlen senden kann? Weil wenn ich mir das dann mit dem 
serialportmonitor in der anfragenkonsole anschaue, dann schreibt er das 
was sende z.b. 10 40 40 16 was ich eigentlich in hex-format senden weil 
auf die "rechte seite" und nicht so wie ich weil auf die "linke seite"!


Hat jemand eine idee?

mfg

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danczi wrote:
> Weil wenn ich mir das dann mit dem
> serialportmonitor in der anfragenkonsole anschaue, dann schreibt er das
> was sende z.b. 10 40 40 16 was ich eigentlich in hex-format senden weil
> auf die "rechte seite" und nicht so wie ich weil auf die "linke seite"!

Ein Screenshot würde helfen zu verstehen, was da auf der "rechten seite" 
und "linken seite" steht.

Jedenfalls kannst Du es versuchen mit:
 Me.Send(Chr(mmm)+Chr(nnn)+Chr(...))

wobei mmm, nnn etc. deine "Hexzahlen" sind.

Autor: danczi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
im anhang der screenshot

so wie ich das verstanden habe steht "links" die werte in HEX und 
"rechts" die werte in ascii!!

ich könnte ja z.b. .@@. auch senden, steht dann auf der linken seite 
nicht 10 40 40 15 sondern irgendwas anderes

mfg

Autor: danczi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit "Me.Send(Chr(mmm)+Chr(nnn)+Chr(...))" funzt nicht

serialportmonitor sagt 0A 28 28 10 bzw .((.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, du sendest:

HEX: 10 40 40 16, raus kommt dabei .@@.

Du möchtest aber haben:

HEX: 31 30 34 30 34 30 31 36 -> 10404016

Hab ich das so richtig verstanden?

> ich könnte ja z.b. .@@. auch senden, steht dann auf der linken seite
> nicht 10 40 40 15 sondern irgendwas anderes
die beiden 40er werden dastehen, weil das dem @-Zeichen entspricht, die 
Punkte kommen je nach verwendeter Schriftart bzw. Terminal-Programm für 
alle Zeichen, die nicht darstellbar sind.

Ralf

Autor: danczi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also es ist so:

ich würde gerne  10 40 40 16 senden und ich weil auch haben das das dann 
bei serialportmonitor auf der linken also als HEX steht!

mit dem @ das das immer 40 ist das stimmt!


weil das tut das ich ja verwende sendet ja ascii d.h ich muss vorher im 
vb das 10 40 40 16 irgendwie umconvertieren in ascii dann wird gesendet 
und rein theoretisch müsste ja dann beim serialportmonitor ja dann auf 
der ascii seite .@@. stehen auf der der hex seite 10 40 40 16 oder??
aber wie convertiere ich das in vb von hex in ascii???


mfg

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub jetzt kapier ich es so langsam...

Du gibst in eine Textbox "10 40 40 16" ein, und möchtest das dann auch 
als Hexwert senden?

Hab ichs richtig kapiert?

Ralf

Autor: danczi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja richtig

Autor: danczi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe jetzt schon herausgefunden wie es mit zahlen funzt:


        Dim c() As Char = {Chr(&H10), Chr(&H40), Chr(&H40), Chr(&H16)}


aber wenn ich jetzt z.b. E5 senden will sagt serialportmonitor bei ascii 
"?" und bei hex "3F"

mfg

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, wenn du eine Textbox für die Eingabe verwendest, dann hast du die 
Zahlen ja nicht direkt, sondern als Zeichen vorliegen, also '0' = 0x30, 
'1' = 0x31, usw.
Die Eingabe der Textbox ist ein String. Guck mal in der Hilfe zum 
FrameWork nach der Convert-Klasse. convert.toByte(string) dürfte helfen.
Du musst aus dem Text der Textbox immer die ersten beiden Zeichen 
auslesen, konvertieren und senden.
Das Auslesen der beiden Zeichen sollte mit der left-Funktion klappen.

Ralf

Autor: danczi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also das problem liegt nicht beim auslesen von der textbox,

in habe gelesen das die funktion char einen wertebereich von -127 bis + 
127 hat und darum kann ich keine buchstaben senden!
angeblich funzt unsigned char was einen wertebereich von 0 bis 255 haben 
soll, weiß aber nicht wie man das jetzt deklariert!

ist da was wahres dran?

mfg

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.