hej!
jag har gjort ett projekt med en Arduino som är försedd med en ultraljudsensor samt en RF-modul 433 Mhz.
sensorn mäter nivån i en septiktank och sänder iväg data trådlöst till en mottagardel inne.
Mottagardelen är även det en Ardino med mottagar RF-modul.
Arduinon är kopplad till min pc via usb (serie) och på pcn har jag ett VB6 program som jag gjort som visar datat visuellt.
jag har kört detta program med två givare tidigare som mäter temperatur och lufttryck bode inne och ute, allt har funkat bra med dessa två.
Nu till problemet med "nya" sensorn. Den mäter avståndet genom att "pinga" iväg en puls som stutsar tillbaka och så mäts tiden och blir till avstånd.
datat lagras i en sträng (string) i rf-modulen och jag behöver formatera strängen så att datat kan omvandlas till en Int eller double variabel för att kunna hantera datat matematiskt.
Min stäng skiftar mellan att ge maxavstånd som är 401 Cm och då innehåller strängen = 401 alltså 3 siffror.
när avståndet minskar så får jag tex 43.21 cm alltså ett decimaltal och minskar jag ännu mer till mindre än 10cm så får jag tex 2.85 cm .
detta gör att jag inte kan ta emot datat och göra om det med funktionen Val ( sträng) .
Kan någon vänlig själ hjälpa mig med hur man formaterar strängen så att den bara visar heltal från 1 cm till 140 cm och tar bort eller avrundar på nåt sätt.
visual basic 6 strängformatering
-
- Inlägg: 4
- Blev medlem: 12 februari 2023, 11:14:05
Re: visual basic 6 strängformatering
Det finns lite olika sätt att göra på.
Funktionen int() ger ju text-till-heltal.
Samma funktion för flyttal finns också - men du är ju bara intresserat av heltal så om du gör en Djup = int(mätsträngen) ska du få heltal fram till punkt/komma.
Om funktionen just heter int() i VB är jag osäker på, jag kör med C till vardags.
Ett annat sätt är att skanna igenom strängen, tecken för tecken.
Start med att ge en variabel ("Result") värdet noll.
Ta första tecken (peka på...) och OM det är >= '0' OCH <= '9':
Result *= 10;
Result += (tecknet - '0')
Upprepa detta så länge det är siffror.
Funktionen int() ger ju text-till-heltal.
Samma funktion för flyttal finns också - men du är ju bara intresserat av heltal så om du gör en Djup = int(mätsträngen) ska du få heltal fram till punkt/komma.
Om funktionen just heter int() i VB är jag osäker på, jag kör med C till vardags.
Ett annat sätt är att skanna igenom strängen, tecken för tecken.
Start med att ge en variabel ("Result") värdet noll.
Ta första tecken (peka på...) och OM det är >= '0' OCH <= '9':
Result *= 10;
Result += (tecknet - '0')
Upprepa detta så länge det är siffror.
- MadModder
- Co Admin
- Inlägg: 31173
- Blev medlem: 6 september 2003, 13:32:07
- Ort: MadLand (Enköping)
- Kontakt:
Re: visual basic 6 strängformatering
val() ska funka med decimaler, om du inte har några andra tecken efter siffrorna, samt att variabeln är satt till real och inte int.
Och om du vill avrunda sen och inte bara klippa av decimalerna använder du round().
Annars för att klippa bort decimalerna innan i strängen kan du ju göra såhär tänker jag...
position = instr([sträng] & ".", ".")
resultat = left([sträng], position-1)
Kolla var punkten är. Finns ingen punkt från början hittar den punkten som lagts till efter med & ".".
Sen ta bara den del från vänster som är innan punkten.
Och om du vill avrunda sen och inte bara klippa av decimalerna använder du round().
Annars för att klippa bort decimalerna innan i strängen kan du ju göra såhär tänker jag...
position = instr([sträng] & ".", ".")
resultat = left([sträng], position-1)
Kolla var punkten är. Finns ingen punkt från början hittar den punkten som lagts till efter med & ".".
Sen ta bara den del från vänster som är innan punkten.
-
- Inlägg: 4
- Blev medlem: 12 februari 2023, 11:14:05
Re: visual basic 6 strängformatering
Val() vill ha lokalens decimaltecken vilket normalt på en svensk dator är komma ",". Vill du göra om en sträng med punkt så kan du köra Replace(sträng, ".", ",") eller motsvarande först.
Edit: Eller blandar jag ihop det med CVal() nu?
Edit: Eller blandar jag ihop det med CVal() nu?
- MadModder
- Co Admin
- Inlägg: 31173
- Blev medlem: 6 september 2003, 13:32:07
- Ort: MadLand (Enköping)
- Kontakt:
Re: visual basic 6 strängformatering
Vad jag vet vill val bara ha en punkt oavsett vad man har för lokalt talformat. 

Re: visual basic 6 strängformatering
Det hade jag förväntat mig av Basic också.
Däremot har jag stött på en rätt modern och kanske till och med populär Android app, där "tangentbordet" bara kunde generera det ena och inputfältet bara accepterade det andra ...tills jag ändrade telefoninställningarna till helengelska.
Däremot har jag stött på en rätt modern och kanske till och med populär Android app, där "tangentbordet" bara kunde generera det ena och inputfältet bara accepterade det andra ...tills jag ändrade telefoninställningarna till helengelska.