char_to_string verti į string, ir string.FindFirst ras "TE" poziciją. On 2020-12-09 14:53, Shadowed wrote: > Sveiki, "pasigirsiu" ties kuo dabar strigau. > Taigi, per RS232 gautus duomenis iš buferio nusiskaitau ir sudedu į "sb" > stringą: > byte[] buffer = new byte[serialPort1.BytesToRead]; > serialPort1.Read(buffer, 0, buffer.Length); > sb = new StringBuilder(); > for (int i = 0; i < buffer.Length; i++) > sb.AppendFormat("{0:X2} ", buffer[i]); > Beveik tuom šita programėlė ir baigiasi, ten dar keletas patikrinimų ir > nustatymų. Kitoje programėlėje noriu apdoroti duomenis. Pirmas žingsnis > – gautus HEX’us > public void Process_Data() > { > tBox_Raw_Data.Text += sb.ToString() + Environment.NewLine; // Į > textboxą parašau gautą sb eilutę, formatas 01 0A 02 02 00 00 0F...), bet > čia tik pasitikrinimui, vėliau ištrinsiu. > string hexValues = sb.ToString(); > string[] hexValuesSplit = hexValues.Split(new[] { ' ' }, > StringSplitOptions.RemoveEmptyEntries); > StringBuilder char_to_string = new StringBuilder(); > foreach (string hex in hexValuesSplit) > { > int value = System.Convert.ToInt32(hex, 16); > string stringValue = Char.ConvertFromUtf32(value); > char charValue = (char)value; // Čia jau turiu tai ko reikia, visi HEXai > konvertuoti į atitinkamas raides, kas ne raidės atfiltruota. Raidės ne > random, ten bus žodžiai. Nu pvz Test1irIeskau. > char_to_string.Append(charValue); // Toliau reikės tos eilutės žodžius > susidėlioti į atitinkamas vietas. Apie tai – po programėlė. > } > } > Gavus tą “hh hh hh T e s t 1 hh hh hh i r hh hh I e s k a u “ (hh – bet > kokie hexai, ne ASCII) norėsiu išmėtyti po label’us, tam reiks ieškoti > eilutėje atitinakmų raidžių. Šiaip turbūt reikalinga vieta nesikeis ir > visada bus tarkim nuo 4 pozicijos iki 8 žodžiui Test1, bet noriu išmokti > daugiau, tai tikslas būtų ieškoti pirmų dviejų raidžių pvz Te ir radus > ištraukti visą žodį. Tas žodis visada bus vienodo ilgio, tai čia truputį > supaprastina, kad nereiks specialiai detektuoti žodžio galo. Tas pats ir > su Ieskau – pasiusti per eilutę užklausą su Ie, kad surastų visą žodį, > kurio ilgis irgi visada vienodas. Kad liktų vien raidiniai hex’ai paskui > gal dar if’insiu su hexų ribinėm vetrėm. Chm.. Dabar pagalvojau, kad gal > tada nebeliks tarpų ir visokių ne raidinių kripučių iš tų random HEXų ir > beliks tik suskaldyti eilutę su kokiu TRIM ar panašiai. Bandau Šypsena > Bet visa kita išlieka... > char_to_string.Append(charValue); – čia ta paskutinė eilutė, tikėjausi, > kad padės, bet kažkaip nesuveikia... > Šiam momentui – ar teisingas toks Process_Data variantas, norint gauti > reikiamą rezultatą ? Jeigu teisingas – į kurią pusę toliau kapstytis? > Kažkaip Googlo variantai nesuveikė, tai nepagalvokit, kad aptingau ir > pirmu taikymu čia klausiu Šypsena