CP340 ASCII Zeichen senden und empfangen

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo !

... Gibt es eine Möglichkeit in String umzuwandeln ohne die Zusatzangaben bzw gibt es die Möglichkeit den String trotzdem in DINT umzuwandeln?

Mit der SuFu hier im Forum gibt es schon Themen ASCII--> INT oder zu DINT...

Hier ein erstes Ergebnis:
http://www.sps-forum.de/showthread.php?t=17309&highlight=ASCII+INT

Das kannst du von INT auf DINT aufbohren, ohne den String-Header nutzen zu müssen !

Und natürlich die ASCII-Tabelle bereithalten...:ROFLMAO:

Gruss
 
Direkt von ARRAY OF CHAR in DINT umwandeln wäre natürlich noch besser.
Allerdings sind mir noch ein paar Dinge unklar bei dem Codebeispiel:
Soviel ich verstanden habe Lade ich das entsprechende Byte aus meinem ARRAY OF CHAR [1..8] also zb DB4.DBB1 dann ==> ITD und je nach dem welche Wertigkeit die Stelle hat *1 *10 *100 usw.

Code:
// ASCII-Tabelle
//
// CHAR '0' = HEX 30 = DEZ 48
// CHAR '1' = HEX 31 = DEZ 49 
// CHAR '2' = HEX 32 = DEZ 50 
// CHAR '3' = HEX 33 = DEZ 51 
// CHAR '4' = HEX 34 = DEZ 52 
// CHAR '5' = HEX 35 = DEZ 53 
// CHAR '6' = HEX 36 = DEZ 54 
// CHAR '7' = HEX 37 = DEZ 55 
// CHAR '8' = HEX 38 = DEZ 56 
// CHAR '9' = HEX 39 = DEZ 57 
 
      AUF   DB   200
 
      L     0
      T     MD   200                    // Ergebnis
 
      L     DBB    0                    // Wert x 10000
      ITD   
      L     L#48
      -D    
      L     L#10000
      *D    
      T     MD   200                    // Ergebnis
 
      L     DBB    1                    // Wert x 1000
      ITD   
      L     L#48
      -D    
      L     L#1000
      *D    
      L     MD   200
      +D    
      T     MD   200                    // Ergebnis
 
      L     DBB    3                    // Wert x 100
      ITD   
      L     L#48
      -D    
      L     L#100
      *D    
      L     MD   200
      +D    
      T     MD   200                    // Ergebnis
 
      L     DBB    4                    // Wert x 10
      ITD   
      L     L#48
      -D    
      L     L#10
      *D    
      L     MD   200
      +D    
      T     MD   200                    // Ergebnis
 
      L     DBB    5                    // Wert x 1
      ITD   
      L     L#48
      -D    
      L     MD   200
      +D    
      T     MD   200                    // Ergebnis
So weit so klar aber wieso lade ich eine 0 und ziehe diese ab? ( L L#48 )
Dann Lade ich den Wert aus MD 200 addier eine 0 und Transferiere wieder nach MD200. Warum?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Du hasst die Bedeutung des ASCII-Code nicht verstanden.

Wenn du die Zeichen '12345' erhälst ist das eine Zeichenfolge aber keine Zahl .
Die SPS kann dies halt nicht als Zahl umwandeln, soweit ist dir das ja klar.

In deinem Posting ist ja die Umsetzung der Zahlen als ASCII schon aufgeführt.

Eine Null als Text wird durch ein Byte mit dem Inhalt 48Dez beschrieben.
Um jetzt die Null als Zahl 0 zu erhalten zieht man 48 ab.
'0' = 48dez -48dez = 0dez
'1' = 49dez -48dez = 1dez

Das erste laden der 0dez löscht des MD200 ab (Fehler es muß dort L L#0 heissen)
In dem MD200 summiert man jetzt jede Stelle in dem Chararray mit der Wertigkeit der jeweiligen Stelle zusammen.
z.B. 01234
Code:
1. Stelle '0' = 48dez-48dez =0dez*10000 = 0
2. Stelle '1' = 49dez-48dez =1dez*1000  = 1000+0 =1000
3. Stelle '2' = 50dez-48dez =2dez*100   = 200 +1000 = 1200
4. Stelle '3' = 51dez-48dez =3dez*10    = 30+1200 =1230
5. Stelle '5' = 52dez-48dez =4dez*1      = 4+1230 = 1234
 
Hallo TF !

Du hasst die Bedeutung des ASCII-Code nicht verstanden.
Wenn du die Zeichen '12345' erhälst ist das eine Zeichenfolge aber keine Zahl Die SPS kann dies halt nicht als Zahl umwandeln, soweit ist dir das ja klar.
In deinem Posting ist ja die Umsetzung der Zahlen als ASCII schon aufgeführt.


schau dir doch noch mal die ASCII-Codetabelle an !

0dez = 30hex = "0" in ASCII
1dez = 31hex = "1" in ASCII
2dez = 32hex = usw.

Wenn du also "1234" in ASCII erhältst, dann nimm´
(1.ASCII-Zahl - 30hex) * 1000 = 1000dez
+
(2.ASCII-Zahl - 30hex) * 100 = 200dez
+
...usw. ...
Das Tehma "Zeichenkette wandeln" findest du samt Hinweisen und Beispiel hier im Forum unter:
http://www.sps-forum.de/showthread.php?t=46804

Grüsse
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

nu´ mach mal hier nich´ auf Erbsenzähler...! :p:rolleyes:

DU weisst schon, was gemeint ist !:cool:

Aber hast recht, ist unverständlich ausgedrückt...:ROFLMAO:

also:

0dez = 48dez in ASCII = 30hex in ASCII = "0" in CHAR der Zeichenkette

... zufrieden ? ;)

Gruss
 
NEIN

0dez = 48dez in ASCII = 30hex in ASCII = "0"

Wenn schon richtig beschreiben !

Hallo,

nu´ mach mal hier nich´ auf Erbsenzähler...!
icon_razz.gif
rolleyes.gif

Fang hier nicht so einen schwulen Verzähl an.

Alles was zu sagen war , steht in meiner Antwort.
Ein Zitat darauf mit falschen Aussagen verwirrt alle Leute.

Aber Hauptsache was zum Thema geschrieben :confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Jabba:
Ich muss gestehen, dass ich die Art der Beitragserstellung von SM auch so dann und wann für "ein wenig" gewöhnungsbedürftig halte. In diesem Fall hat er sich aber doch durchaus mehr Mühe gegeben :cool: und die ASCII-Hex-Dezi-Beschreibung ging doch wohl :rolleyes:
 
@lupo,

Jein, erst erklärt ers halb Falsch und dann nur fast richtig :ROFLMAO:

0dez = 30hex = "0" in ASCII
1dez = 31hex = "1" in ASCII
2dez = 32hex = usw.
Erst dieser Lappsus, der so stehen müsste:

Code:
[COLOR=Red]48dez[/COLOR] = 30hex = "0" in ASCII
 [COLOR=Red]49dez[/COLOR] = 31hex = "1" in ASCII
 [COLOR=Red]50dez[/COLOR] = 32hex = usw.



0dez = 48dez in ASCII = 30hex in ASCII = "0" in CHAR der Zeichenkette

... zufrieden ? ;)

Gruss

Dann hier wieder, das erste 0dez ist hier sprich weg falsch.
 
was soll denn das hier werden??? :rolleyes:
Warum geilt ihr euch an so ner Kleinigkeit so auf?

Als ob man jeden Beitrag so genau unter die Lupe nehmen würde...

Wer die erste (nicht ganz korrekte) Erklärung von SM nicht verstanden hat, der hat eh ein ganz anderes Problem.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für uns ist es vielleicht ne kleinigkeit, aber für jemand wie den Fragesteller der sich grad in das Thema arbeitet, sollte das geschriebene schon stimmen.
Denn für die SPS ist 0dez und 30hex schon ein kleiner unterschied ;)
 
Hallo zusammen !

Ja, da hab ich mich wohl falsch oder fehlerhaft ausgedrückt...:rolleyes:

Und hier habe ich aufgrund der massiven Intervention von J. versucht, dies mit dem eigenen Beitrag von J. richtig zu stellen:

Hi TF,
hier noch ein weiterer (wegen der hier vorangegangenen Beiträge ein sehr diskussionsnaher) Link für dein Problem...
http://www.sps-forum.de/showthread.php?t=17309&page=1
... insbesondere die Beiträge #44 und #47 auf Seite 5 beachten bezüglich der richtigen ASCII-Darstellung...
Gruss

leider war das die Reaktion darauf:

...Nennt man so etwas Minderwertigkeitskomplex oder Profilneurose ?...


Nun habe ich mal die Beiträge der letzten 3 Monate von J. angeschaut und dabei festgestellt, dass KEINER der Beiträge von J. eine konkrete Hilfe zu der jeweiligen Fragestellung enthält, vielmehr nur allgemeine Hinweise auf Handbücher/ Vorschriften/andere Links usw., also keine eigene konstruktive Hilfe zum jeweiligen Thema...


Liebe(r) Jabba, bei allem Respekt:

Wann hast du zuletzt konkret eine Hilfestellung gegeben und hast gezielt auf die Probleme des Fragestellers geantwortet ?
In deinen Beiträgen des letzten 1/4-Jahres habe ich nur Allgemeines rausgelesen...

Nun habe ich hier in diesem Thread versucht, konkrete Lösungen aufzuzeigen und du pickst dir hier einen Fehler heraus,
um dich daran... <... was weiss ich ...ist deine Sache...>

Gern kannst du mich auf meine Fehler aufmerksam machen, da bin ich offen und gestehe diese sicher auch ein.
Aber dies sollte auf jeden Fall im fachlichen und themenbezogenen Rahmen geschehen und nicht mit persönlichen Anfeindungen...

Mein Ziel wie das vieler anderer ist es, dem TE zu helfen !

Ich denke erstmal, das ist wohl auch bei dir vordergründig, oder ...?:confused:
Gruss
 
Zurück
Oben