RS232 Wysyłanie danych w hex.

0

Potrzebuje wysłać dane w formacie hex przez rs232. Napisałem taki kawałek kodu:

            while (true) //w tej petli jestesmy, dopoki nie nastapi timeout, albo nie przyjdą dane
            {
                if (noweDaneZBufora == "+")  //jesli przyszly dane to
                {
                    noweDaneZBufora = "";
                    for (int k = 0; k < wsadDoWyslania.Length; k++)
                    {

                        comport.Write(wsadDoWyslania, k, 1);

                        //textBox.AppendText(wsadDoWyslania[k].ToString());
                        //textBox.Refresh();

                    }
                    break;

                }

            }
  1. Chciałbym do textBox wrzucić zawartość wsadDoWyslania w formacie hex. Mając takie coś:
              textBox.AppendText(wsadDoWyslania[k].ToString());
                        textBox.Refresh();

Otrzymuje np. zamiast FF --> 255. Jest to zrozumiałe bo użyłem ".toString()".
Jak zmienić te dane aby w oknie zamiast 255 otzrymac FF ?

  1. Tak samo muszę wysłać je do mikrokontrolera. Czy powyższa funkcja mi to zapewni?
0

Otrzymuje np. zamiast FF --> 255. Jest to zrozumiałe bo użyłem ".toString()".
Jak zmienić te dane aby w oknie zamiast 255 otzrymac FF ?

Użyj google kurna. wsadDoWyslania[k].ToString("X"); - o takie to skomplikowane.

  1. Tak samo muszę wysłać je do mikrokontrolera. Czy powyższa funkcja mi to zapewni?

Niezależnie jak o tym myślisz, dane polecą jako strumień bitów. A jak zamienisz na string to i tak poleci strumień bitów, tylko o zupełnie innych wartościach niż zamierzone.

Jeżeli dobrze rozumiem Twoje zamiary, to nic nie musisz konwertować do zapisu. Powinieneś zrozumieć, że 16-owy system liczbowy jest sposobem REPREZENTACJI liczby. Komputer i tak wszytko widzi na czarno biało: 0 i 1

0

Dzięki bardzo. Nie sądziłem że to takie proste.
C# zaczynam więc proszę o wyrozumiałość.
Jestem przyzwyczajony do programowania na niższym poziomie :-)
Już teraz na drugie pytanie sam sobie potrafię odpowiedzieć.

0

C# zaczynam więc proszę o wyrozumiałość.

Poziom początkujący nie ma nic do rzeczy, jeżeli chodzi o coś co można wygooglować w 10s prostym zapytaniem.
Bo wiesz ja też nie pamiętałem jak to było i wpisałem po prostu C# hex. Na tej płaszczyźnie narzekać będziemy zawsze.

0

To w jakim formacie, a dokładniej w systemie liczbowym chcesz wyświetlać dane, nie ma znaczenia, fizycznie i tak będzie to strumień zer i jedynek. Tak więc odpowiedź na pyt. 2 brzmi: tak, mikrokontroler dostanie dokładnie to co mu wyślesz ;)

0

Mam taki kawałek kodu

 private void btnHex_Click(object sender, EventArgs e)
        {
            if (port.IsOpen)
            {
             DodajKolorowy(rtbTerminal, txtSend.Text, System.Drawing.Color.Black); //służy do kolorowania tekstu w oknie
                port.Write(txtSend.Text); //wysyła to co wpisze w pole TextBox jako ASCII
            }
            else System.Windows.Forms.MessageBox.Show("Aby wysłać bajt musisz ustanowić połączenie");

Jak zrobić, aby wpisując ciąg HEX w pole tekstowe (np. FF FF 00 03 02 1F 22 ) było to właśnie wysyłane na port

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0