Tema: Re: C# dar užstrigau...
Autorius: Shadowed
Data: 2020-12-09 15:33:00
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