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
>