INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Serielle Komunikation mit Mikrocontroller



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

05.11.2006, 21:45
Beitrag #1

Mark_labview Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: May 2005



kA



Serielle Komunikation mit Mikrocontroller
Hallo Zusammen,

Ich habe folgendes Problem:
Ich möchte eine Zahl im Bereich von 0-255, also ein Byte, an meinen Mikrocontroller übertragen. Dazu müsste ich die Zahl in ein ASCII Zeichen umwandeln. Das habe ich mit viel Aufwand auch geschaft, das dumme ist das dabei offenbar die Windows ASCII-tabelle verwendet wird, mein Controller arbeitet aber mit IBM-Standart.

So, giebt es eine Möglichkeit die VISA Schnittstelle Bitweise anzusprechen oder meine eigene ACII-Tabelle anzulegen? Das blöde aber wäre das ich nicht weis wie ich die ganzen Sonderzeichen da eintragen soll/muss.

Vielen Dank für eure Hilfe!

Labview Version 8.0
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.11.2006, 09:34
Beitrag #2

Oliver Listing Offline
LVF-Freak
****


Beiträge: 721
Registriert seit: Sep 2004

2012 und 2014 (Windows und Linux)
1998
EN

22844
Deutschland
Serielle Komunikation mit Mikrocontroller
Hi Mark,

' schrieb:Hallo Zusammen,

Ich habe folgendes Problem:
Ich möchte eine Zahl im Bereich von 0-255, also ein Byte, an meinen Mikrocontroller übertragen. Dazu müsste ich die Zahl in ein ASCII Zeichen umwandeln. Das habe ich mit viel Aufwand auch geschaft, das dumme ist das dabei offenbar die Windows ASCII-tabelle verwendet wird, mein Controller arbeitet aber mit IBM-Standart.

So, giebt es eine Möglichkeit die VISA Schnittstelle Bitweise anzusprechen oder meine eigene ACII-Tabelle anzulegen? Das blöde aber wäre das ich nicht weis wie ich die ganzen Sonderzeichen da eintragen soll/muss.

Vielen Dank für eure Hilfe!

da muß dir ein anderer Fehler unterlaufen sein.
Zum Ersten eine Zahl wandelst du am schnellsten, wie schon sooft im Forum beschrieben, mit der Funktion Byte Array To String in ein String um (FunctionsNumericConversion). Vorher noch ein Build Array einschieben.
Zum Anderen ist es völlig egal in welches sichtbare Zeichen dein Betriebssystem es umwandelt. Es zählt einzig und alleine die Bitreihenfolge, die über die Serielle Schnittstelle gesendet wird und die wird wieder deiner Zahl entsprechen. Du kannst dies einfach mit einem Speicherozzi oder RS232-Analyser nachprüfen.
Mit welcher Tabelle Windows also gearbeitet hat ist egal - es steckt immernoch die gleiche Zahl dahinter.

Gruß
Oliver
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.11.2006, 09:52
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Serielle Komunikation mit Mikrocontroller
' schrieb:Ich möchte eine Zahl im Bereich von 0-255, also ein Byte, an meinen Mikrocontroller übertragen. Dazu müsste ich die Zahl in ein ASCII Zeichen umwandeln.
Ein ASCII-Zeichen ist eine Zahl im Bereich von 0 bis 255.

Ein Byte ist eine Typbezeichnung mit der Breite 8 Bit.

ASCII, HEX, Dezimal und wie sie alle heißen ist eine Darstellungsform einer Zahl. Hex 0x41 = DEC 65 = ASCII 'A'. Darstellungsformen an sich kann man aber nicht übertragen. Übertragen kann man nur Zahlen. Willst du das Byte 65 - also z.B. ASCII 'A' - in Hexform übertragen musst du die beiden Zahlen für '4' und '1', also 0x34 und 0x31 übertragen.

Zitat:Das habe ich mit viel Aufwand auch geschaft,
Da für mich ASCII und Binär identisch ist, kann ich diesen Aufwand nicht nachvollziehen.

Zitat:das dumme ist das dabei offenbar die Windows ASCII-tabelle verwendet wird, mein Controller arbeitet aber mit IBM-Standart.
Die ASCII-Tabelle ist normiert. Oder möchtest du EBCDIC übertragen (was ich mir eigentlich nicht vorstellen kann)?

Zum Umwandeln Zahl in String siehe Posting von Oliver Frank.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.11.2006, 10:24
Beitrag #4

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Serielle Komunikation mit Mikrocontroller
Hallo,

meines Erachtens muss 41 (hex) nicht mehr in Hex umgewandelt werden, bevor es übertragen wird, wenn ich ASCII 'A' rüberschicken möchte. Wink

Gruß Markus

' schrieb:ASCII, HEX, Dezimal und wie sie alle heißen ist eine Darstellungsform einer Zahl. Hex 0x41 = DEC 65 = ASCII 'A'. Darstellungsformen an sich kann man aber nicht übertragen. Übertragen kann man nur Zahlen. Willst du das Byte 65 - also z.B. ASCII 'A' - in Hexform übertragen musst du die beiden Zahlen für '4' und '1', also 0x34 und 0x31 übertragen.

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.11.2006, 10:31
Beitrag #5

Oliver Listing Offline
LVF-Freak
****


Beiträge: 721
Registriert seit: Sep 2004

2012 und 2014 (Windows und Linux)
1998
EN

22844
Deutschland
Serielle Komunikation mit Mikrocontroller
' schrieb:meines Erachtens muss 41 (hex) nicht mehr in Hex umgewandelt werden, bevor es übertragen wird, wenn ich ASCII 'A' rüberschicken möchte. Wink
ich kann mich Markus da nur anschließen...

Gruß
Oliver
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.11.2006, 10:54
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Serielle Komunikation mit Mikrocontroller
' schrieb:meines Erachtens muss 41 (hex) nicht mehr in Hex umgewandelt werden, bevor es übertragen wird, wenn ich ASCII 'A' rüberschicken möchte. Wink
Das ist richtig.

Wenn ich ASCII übertragen will, brauche ich nicht wandeln.

Muss ich aber HEX übertragen, weil die Gegenseite quasi lesbare Zeichen verlangt - nämlich HEX-Darstellung - muss ich die beiden ASCII-Zeichen der Hex-Darstellung übertragen.

Im übrigen bin ich der Meinung, dass Mark_LabVIEW möglicherweise eine Hex-Übertragung meint, auch wenn er ASCII schreibt. Wink

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.11.2006, 21:17
Beitrag #7

Mark_labview Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: May 2005



kA



Serielle Komunikation mit Mikrocontroller
<div align="left">
Hallo,

ersteinmal allen vielen Dank für eure Antworten!
Zitat:Zum Anderen ist es völlig egal in welches sichtbare Zeichen dein Betriebssystem es umwandelt. Es zählt einzig und alleine die Bitreihenfolge, die über die Serielle Schnittstelle gesendet wird und die wird wieder deiner Zahl entsprechen.

Das ist mir im laufe des gestrigen Abends auch bewusst geworden. Dann habe ich den ganzen Abend damit zugebracht, zu Rätzeln wo den dan mein Fehler noch liegen könnte. Da ich nicht drauf gekommen bin geb ich das Rätzel jetzt an euch weiter. Ich geb zu das das eine harte Nuss ist da der Fehler sowohl bei LabVIEW als auch in meinem Microkontroller Programm liegen kann. Und beide habt ihr nicht vorliegen. Naja villeicht hat doch jemand eine Idee mit den folgenden Hinweisen:

Also wie gesagt ich wandle eine Integer Zahl in ein ASCII-Zeichen und schike es dann über RS232 zu meinem Controller. Das was dort ankommt gebe ich ohne umschweife auf einem Display aus. Ein speicheroszy besitze ich leider keines, kann mir also die Daten dazwischen nicht ansehen. Das Ergebniss: Ich stelle fest das einige Zaheln korrekt ankommen, andere nicht. Ich hab mal eine kleine ( nicht vollständige liste gemacht) Villeicht erkennt ja jemand einen Algorythmus der auf das Problem schliesen lässt. Danke und viel Spass beim Rätzeln!

gesendet - empfangen
0 - 248
1 - 249
2 - 250
3 - 251
4 - 252
5 - 253
6 - 254
7 - 255
8 - 8
9 - 9
10 - 10
11 - 11
12 - 12
13 - 13
14 - 14
15 - 15
16 - 136
17 - 137
18 - 138
19 - 139
20 - 140
21 - 141
22 - 142
23 - 143
24 - 136
25 - 137
26 - 138
27 - 139
28 - 140
29 - 141
30 - 142
31 - 143
32 - 200
33 - 201
40 - 40
41 - 41
48 - 200
49 - 201
64 - 232
72 - 72
73 - 73
74 - 74
104 - 104
105 - 105
</div>

Labview Version 8.0
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.11.2006, 21:33
Beitrag #8

Mr.T Offline
LVF-SeniorMod


Beiträge: 1.007
Registriert seit: Jun 2005

2009
2005
kA

88400
Deutschland
Serielle Komunikation mit Mikrocontroller
Hallo!

Jetzt mische ich auch mal mit.

Da in Deiner Liste 16 UND 24 die selbe Zahl zu erzeugen scheint muß hier ein Logikfehler in der Interpretation der Bits vorliegen. Wertest Du evtl. Start und Stoppbits mit aus?

Einige von uns sind aber auch C-Programmiertauglich. Vielleicht postest Du einfach mal Dein VI und den Empfangssourcecode Deines Controlers - dann kann Dir sicher geholfen werden. Oder Du Postest hier Dein VI und im http://www.cplusplus-forum.de den C-Code. Ich gehe jetuzt einfach mal davon aus, dass der Controller in C/C++/C# Programmiert wurde.

Gruß und programmiere in Zukunft einfach auch die Controller mit LabVIEW - dann klappts einfacher Big Grin!

Tongue

Mit einem freundlichen Wort und etwas Gewalt erreicht man viel mehr als nur mit einem freundlichen Wort. [...Marcus zu Lennier, B5]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.11.2006, 22:14
Beitrag #9

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Serielle Komunikation mit Mikrocontroller
Ich tippe auf Baudrate in LV schneller als im Controller.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.11.2006, 22:44
Beitrag #10

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Serielle Komunikation mit Mikrocontroller
Wenn es wirklich wiederholbar ist, dann tippe ich auf die Darstellung. Im Mikrocontrollerprogramm, musst du die empfangenen Zeichen mit printf() ausgeben (wenn du in C programmierst) aber vorher auf BYTE casten. Ich will wirklich, wie Mr.T. schon gesagt hat deine Empfangs- und Sende-routinen in LV als auch in C anschauen.

Der Denkfehler steckt wie immer in der Vorstellung (Binär <-> ASCII).

Gruss, Eugen

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Testbuchstabe erzeugen für Mikrocontroller floH857 5 3.890 13.02.2017 13:36
Letzter Beitrag: GerdW
  Problem bei Komunikation zwischen vi's FreddyK88 7 5.064 08.03.2016 08:30
Letzter Beitrag: Freddy
  Kommunikation zwischen LabView und Mikrocontroller Joe23 4 6.387 14.06.2013 18:31
Letzter Beitrag: Holy
  Messdaten von Mikrocontroller in Array schreiben max_sambs 13 11.035 25.02.2013 14:28
Letzter Beitrag: max_sambs
  Labview und Mikrocontroller Cuban Pete 2 6.698 17.11.2010 20:48
Letzter Beitrag: Cuban Pete
  Kommuniktion mit Mikrocontroller von Atmel Honeygirl24 24 19.016 12.10.2010 09:20
Letzter Beitrag: Honeygirl24

Gehe zu: