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