Avatar billede alex_sleiborg Nybegynder
09. februar 2006 - 08:25 Der er 13 kommentarer og
1 løsning

Tjekke starten af en streng

Jeg modtager nogle forskellige data fra min seriel port. Data kommer ind som strenge. Jeg modtager en streng som ser således ud QW0,5W, hvor de 0,5 er temperatur fra den enhed der sidder på det seriele interface. Men jeg modtager også andet data, som ikke er temperatur. Jeg modtager den streng QW0,5W med jævne mellemrum. Hvordan får jeg den temperatur ind i en label??? Jeg skal have en eller anden if strengen starter QW så skal den puttes i lbl.Text. Nogen der kan hjælpe
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 08:27 #1
brug if dinstreng.Startswith("qw")
Avatar billede alex_sleiborg Nybegynder
09. februar 2006 - 08:28 #2
Ja noget i den retning. Hvordan piller jeg så alt det der QW og W til sidst fra, så jeg står med en streng der kun indeholder 0,5?
Avatar billede mikkel_sommer Nybegynder
09. februar 2006 - 08:34 #3
Der er flere muligheder, hvis stregnen altid ser sådan ud kan du bruge substring eller replace.

Substring:

string s = "QW0,5W";
s = s.substring(2, 3);

Replace:

string s = "QW0,5W";
s = s.replace("Q", "");
s = s.replace("W", "");
Avatar billede mr-kill Nybegynder
09. februar 2006 - 08:38 #4
string temp = "QW0,5W";

if(temp.Substring(0,2) == "QW")
temp = temp.Substring(2,3);
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 08:51 #5
Du kan bruger noget i denne stil:
string test = "saafa0,500asfasf";
        string output = "";
        foreach (char c in test.ToCharArray())
        {
            if(Char.IsDigit(c) || c == ',')
                output += c;
        }

        System.Diagnostics.Debug.WriteLine(string.Format("{0:d}", output));
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 08:52 #6
på den måde henter den tallet ud uanset hvor det ligger og hvor langt det er.
Avatar billede alex_sleiborg Nybegynder
09. februar 2006 - 08:56 #7
Jeg kan ikke se nogen data fra seriel porten, hvis jeg gøre således

if (COMPort.ReadExisting().StartsWith("QW"))
            {
                this.lbl_Temp.Text = COMPort.ReadExisting();
            }
            else
            {
                listBox.Items.Add(COMPort.ReadExisting());
            }

Hvad skal jeg gøre anderledes??
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 09:00 #8
får du data ud ?
Du skal ikke bruge readline ?
Avatar billede alex_sleiborg Nybegynder
09. februar 2006 - 09:02 #9
har fået det til at virke. Jeg skulle bare gøre sådan her

string com = COMPort.ReadExisting();
            if (com.StartsWith("QW"))
            {
               
                this.lbl_Temp.Text = com;
            }
            else
            {
                listBox.Items.Add(com);
            }

Readline virker ikke mærkelig nok
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 09:03 #10
ok den kan være måde hvorpå data bliver skrevet på.
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 09:04 #11
du kan lave en metode på denne måde:
private string getDouble(string input)
{
foreach (char c in input.ToCharArray())
        {
            if(Char.IsDigit(c) || c == ',')
                output += c;
        }

      return string.Format("{0:d}", output);

}
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 09:05 #12
og bruge this.lbl_Temp.Text = getDouble(com);
Avatar billede alex_sleiborg Nybegynder
09. februar 2006 - 09:06 #13
Har fået det til at virke 100% nu. Smid et svar chaos og mange tak for hjælpen
Avatar billede dr_chaos Nybegynder
09. februar 2006 - 09:11 #14
np :)

du bør tjekke hvad der sker hvis der kommer flere tal i en linie ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester