Witam!
Napisałem program, który wysyła i odbiera dane za pomocą portu szeregowego. Program jest prosty, od razu po wciśnięciu klawisza na klawiaturze przekazuje dany znak do odbiorcy.
Zastanawia mnie jedna rzecz. Skoro port szeregowy ma 8 bitową szynę danych to dlaczego przesłanie pojedynczego znaku powoduje przesłanie 2 bajtów, a nie jednego?
Rozumiem, że w C# zmienna char ma 16 bitów i to może być spowodowane tym faktem, ale przesyłając np. znak '3' przesyłam wartość 0x0033, czyli przesyłam dwa bajty 0x00 oraz 0x33, zatem w odbiorze wyświetla się tylko '3' bo 0x00 to NULL. Byłoby to dla mnie zrozumiałe, ale wysyłając znak 'ć' wartości 263 czyli 0x0107 wysyłam dwa bajty 0x01 oraz 0x07 czyli znak SOH i BEL według tablicy ASCII, czyli rozumiem nic nie powinno się wyświetlić w oknie odbioru, a ja otrzymuję znak '?' czyli 0x3F? Czym to jest spowodowane?
Napisałem program, który wysyła i odbiera dane za pomocą portu szeregowego. Program jest prosty, od razu po wciśnięciu klawisza na klawiaturze przekazuje dany znak do odbiorcy.
Zastanawia mnie jedna rzecz. Skoro port szeregowy ma 8 bitową szynę danych to dlaczego przesłanie pojedynczego znaku powoduje przesłanie 2 bajtów, a nie jednego?
Rozumiem, że w C# zmienna char ma 16 bitów i to może być spowodowane tym faktem, ale przesyłając np. znak '3' przesyłam wartość 0x0033, czyli przesyłam dwa bajty 0x00 oraz 0x33, zatem w odbiorze wyświetla się tylko '3' bo 0x00 to NULL. Byłoby to dla mnie zrozumiałe, ale wysyłając znak 'ć' wartości 263 czyli 0x0107 wysyłam dwa bajty 0x01 oraz 0x07 czyli znak SOH i BEL według tablicy ASCII, czyli rozumiem nic nie powinno się wyświetlić w oknie odbioru, a ja otrzymuję znak '?' czyli 0x3F? Czym to jest spowodowane?