EIn Beispiel, hoffentlich verständlich
Code:Dim Inpt As String * 20 Dim Utp As String * 20 Dim Va As Integer Va = 123 Inpt = Str(va) Utp = Format(inpt , "000000") Print Utp
Hallo,
ich möchte eine Software über RS232 ansteuern und die gibt ein bestimmtes Format vor:
Und da muss ich 6 Zeichen senden! also wenn ich eine 1 senden möchte muss ich 000001 senden wie geht das?
Genauer gesagt ich möchte einen Analogeingang auslesen und dann übe RS232 senden ABER immer 6 Zeichen.
Tobias
EIn Beispiel, hoffentlich verständlich
Code:Dim Inpt As String * 20 Dim Utp As String * 20 Dim Va As Integer Va = 123 Inpt = Str(va) Utp = Format(inpt , "000000") Print Utp
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
hmmm....
kannst du mir das noch ein bisschen erklären?
Warum String*20 - warum nicht *6?
Also ich verstehe das soo:
Va = 123 oder z.B. mein Analogeingang....
Va kommt in ein String (Inpt)
Utp bekommt das Format 000000 und inpt(warum kann ich hier nicht gleich Va eintragen?)
Dann wird Utp ausgegeben.
Tobias
Hallo,
möcht auch mal was schreiben
Also du kannst natürlich auch string * 6 "schreiben" , dann "passen" halt 6 Zeichen in deinen String, macht dann 7 Byte.Warum String*20 - warum nicht *6?
Richtig. Va wird in durch die STR-Funktion in einen String umgewandelt.Va kommt in ein String (Inpt)
Naja, inpt bekommt das Format und wird in Utp gespeichert. Du kannst der FORMAT-Funktion nur Strings übergeben, wenn Va ein String ist,kannst du auch Va direkt übergeben.Utp bekommt das Format 000000 und inpt(warum kann ich hier nicht gleich Va eintragen?)
Steht auch alles sehr schön in der Online-Hilfe von der Bascom.....
Gute Nacht...
Mfg
Robby[/i]
so und schon fertig - dachte ich...
nun muss nur noch der Analogeingang angehängt werden. Nun habe ich aber ein Problem bei der Umrechnung mit den Kommastellen: die werden ignoriert:
Dim Uuuuu_in0 As Long 'Analogeingang ADC0
Dim Uuuuu_in1 As Long
Dim Uuuuu_in2 As String * 5
Dim Uuuuu As String * 5 '5)Spannung in mV
'Spannung wandeln
'______________________
Uuuuu_in0 = Getadc(0) 'Wert aus Analogeingang laden
Uuuuu_in1 = Uuuuu_in0 * 5.43499511241447
Uuuuu_in2 = Str(uuuuu_in1)
Uuuuu = Format(uuuuu_in2 , "00000")
Print Uuuuu
was muss ich ändern, das die komastelen berücksichtigt werden? Im Ergebniss (Print Uuuuu) soll natürlich KEIN Komma drin sein.
Tobias
Hallo,
ähmm vielleicht solltes du dich doch ein wenig erstmal mit grundlegenden Sachen beschäftigen. Z.Bsp. DATENTYPEN in Bascom
Long ist ganzzahlig, der Wertebereich ist von -2,1Mrd noch irgendwas bis +2,1Mrd....(hab es nicht im Kopf,aber 2^32 dann hast den Wertebereich)
Also?
Ganz klar das dann keine "Kommastellen" vorhanden sind.
Deklariere sie mal als SINGLE anstatt LONG.....
Und kleiner Tip, schau echt einmal in die Online-Hilfe...Dann lernste sicher mehr...
Gruß
Robby
Danke für den Tip,
aber single ist nicht mit dem Analogeingang "kompatibel"
so, hab´s mal ausprobiert:
Source variable does match the target variable [36]
bezieht sich auf:
Uuuuu_in0 = Getadc(0)
Tobias
da es ja mit single probleme gibt habe ich
Dim Uuuuu_in0 As Long
Dim Uuuuu_in1 As Single
Dim Uuuuu_in11 As Single
Dim Uuuuu_in2 As String * 5
Dim Uuuuu As String * 5
Keine Fehlermeldung - aber es kommt nicht´s vernünftiger über RS232 an:
<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð <\0>ð
<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð <\0>ð<\0
>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0>ð<\0 >ð<\0>ð
wie wärs damit? 2 mal rechnen, ist aber nicht die feine art...
Dim Uuuuu_in0 As Long 'Analogeingang ADC0
Dim Uuuuu_in1 As Long
Dim Uuuuu_in11 As Long
Dim Uuuuu_in2 As String * 5
Dim Uuuuu As String * 5 '5)Spannung in mV
'_____________________
Uuuuu_in0 = Getadc(0) 'Wert aus Analogeingang laden
Uuuuu_in1 = Uuuuu_in0 * 5474
Uuuuu_in11 = Uuuuu_in1 / 1000
Uuuuu_in2 = Str(uuuuu_in11)
Uuuuu = Format(uuuuu_in2 , "00000")
'Print Uuuuu
aber kein Komma mehr...na ja...
Lesezeichen