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