Cytat: gufiak pytanie...
Co daje taki zapis...?
Na mój rozum jeżeli wynik podstawiam do zmiennej określonego typu to jest on automatycznie do takiego konwertowany...
Tu akurat dopuszczalne jest rzutowanie niejawne. Tyle, że po paru latach programowania w C wyrobiłem u siebie nawyk rzutowania jawnego gdzie się da, a przynajmniej tam, gdzie wykonuję operacje bitowe na różnych typach danych. Z prostej przyczyny - niejednokrotnie miałem problemy ze znalezieniem błędu w obliczeniach, bo po prostu były różne typy danych, które się gryzły. Ale oczywiście, jak już pisałem, w takim przypadku możesz śmiało korzystać z rzutowania niejawnego.
Cytat: Co do sposobu i protokołu transmisji...
Jeżeli wysyłamy znak start + liczba w ASCII + stop, to łatwo się połapać, że jest błąd...
Prawdopodobieństwo, że dany bajt zostanie przekłamany na inny z zakresu kodów 0-9 (cyfry) jest baaardzo małe...
Nie jest znowu takie bardzo małe. Reprezentacja cyfr 0-9 w kodzie ASCII ma wartości 0x30 - 0x39. Daje to nam 9 kombinacji na każdy bajt, w których może być błąd, a błąd może pojawić się na czterech bitach i nie być wykryty. Jeżeli wysyłamy jeden bajt, to musimy wysłać dwa bajty w kodzie ASCII, czyli już mamy 8 bitów na których mogą wystąpić błędy, co jest równe 1 bajtowi. Poza tym przy zapisie w ASCII robi się więcej danych do wysłania gdy wysyłamy dane większe niż 8-bitowe.
Np.:
Liczba 16-bitowa: w zaproponowanym przeze mnie formacie mamy 5 bajtów: bajt komendy, bajt długości danych, 2 bajty danych oraz bajt sumy kontrolnej. W zaproponowanym przez Ciebie formacie mamy już 6 bajtów: bajt startu, 4 bajty danych oraz bajt stopu, i jeszcze słabszą wykrywalność błędów. Jakby dodać bajt sumy kontrolnej, to w przypadku ASCII mamy oczywiście większe bezpieczeństwo bo ograniczyliśmy alfabet dla danych, lecz już jest 7 bajtów do wysłania.
Liczba 32-bitowa: u mnie 7 bajtów, u Ciebie 10 bajtów.
W przypadku wysyłania łańcuchów znakowych byłoby jeszcze gorzej...
Cytat: W większości przypadków wystarczy w zupełności a bajtów jest mniej w ramce...
Dla liczby 8-bitowej jest mniej, ale dla liczby 8-bitowej nie widzę w większości przypadków sensu tworzenia jakiejkolwiek ramki.
Cytat: Oczywiście twój sposób jest pewniejszy ale może być przerostem formy nad treścią...
To właśnie wysyłanie w danych w formacie ASCII jest zdecydowanym przerostem formy nad treścią.