Laukiam ;) On 2020-12-09 15:33, Shadowed wrote: > Heh jau beveik ir gavosi :) Tuoj dar pašamininsiu, ir jei tikrai gavosi > - pasigirsiu. > > "zZz" parašė naujienų news:rqqje4$p7c$2@news.omnitel.net... > > 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 >