Ja powiem tak - z doświadczenia już wiem bo widzę - że ogromna ilość ludzi tak się boi i obawia komunikacji za pomocą znaków ASCII - Ten twój sposób nr.2) ..... że od razu przechodzą na tryb transmisji binarnej - bo ten wydaje się TAK oczywisty i prosty że szok.
Tyle że ta ogromna większość ludzi nie zdaje sobie sprawy że tylko im się tak WYDAJE i czycha na nich pułapka .... proszę bardzo - właśnie w nią wpadasz ale dodam że jeszcze nie doleciałeś do dna tego wilczego dołu - pułapki - bo na dole czekają na ciebie jeszcze ostre kolce
Tylko proszę mnie źle nie zrozumieć - nie chcę przez to powiedzieć, że transmisja binarna jest jakaś mega koszmarnie trudna i do zrealizowania tylko dla jakichś orłów. Raczej chodzi mi tu o przedstawienie takie obrazowe - różnicy pomiędzy transmisją ASCII a binarną ....
Bo transmisja ASCII to w porównaniu do tych wilczych szańców jak - spacer na boso o poranku po pięknej zielonej łące wilgotnej od porannej rosy
ale cóż - na początku - zwykle każdy widzi niestety to inaczej na swój pohybel
Tak pokrótce o co chodzi:
1. jeśli transmisja binarna to musisz pan opanować:
a. budowanie prawidłowych ramek zawierających znaczniki startu, końca i ew sumy kontrolen
b. posługiwanie się timeoutami !!!!!! - tak o tym długo nikt nie wie i stąd ten ból i kolce
jeśli nie wierzysz to sprawdź sobie jak wygląda pięknie zrobiona transmisja MODBUS RTU - tylko uwaga żeby ci się nie zrobiło niedobrze od analizy kodu - bo mi się zrobiło niedobrze - jak kiedyś to zobaczyłem
reasumując trzeba ściśle pilnować czasu pomiędzy ramkami, dbać o odstępy prawidłowe - i reagować na opóźnione albo uszkodzone ramki - bez tego masz i będziesz miał kaszankę najwyższej jakości
Gdybyś zaś zdecydował się na transmisję ASCII - którą nawet w Bascomie łatwo do pewnego stopnia zrobić na na pewno łatwiej niż binarną (tak mi się wydaje) ..... to wiesz jak może wyglądać ramka ????
coś pięknego - jedna ramka to po prostu najzwyklejszy łańcuch danych tekstowych zakończony znakiem ENTER !!!! może także zawierać CRC ale również jako tekst np liczby HEC (ASCII)
obsługa nadlatujących końców linii w postaci znaków ENTER gigantycznie ułatwia pracę - jak myślisz dlaczego praktycznie większość modemów posługuje się właśnie ASCII - znane ci pewnie ze słyszenia chociaż "komendy AT"
????
dlatego że to super proste do implementacji
no tak a czego tak się boją początkujący w tej transmisji ASCII i to jak wielkiego włochatego jeża ???
a no tego że jak tu przesłać kilka zmiennych różnego typu gdy jedna to liczba, druga to tekst a trzecia to np liczba z przecinkiem
nic prostszego - zamieniasz te liczby na tekst (w Bascomie to pryszcz) i formujesz łańcuch gdzie każda dana oddzielona jest np przecinkiem, np:
zmienna WORD A = 183
zmienna SINGLE B = 27.83
zmienna tekstowa STRING = "ala i as
proszę bardzo po złączeniu może być przesłany taki łańcuch:
"183,27.83,ala i as" i od razu po tym znak ENTER
no tak o ile to jeszcze wydaje się proste to już jak to po drugiej stronie rozłożyć na kawałki?
każdy myśli ... a co ? Od czego macie panowie w Bascomie polecenia typu mid(), left(), right(), val(), str() itp ?????
toż to proste jak drut - no ale ..... niestety coś za coś - jeśli to ma być w Bascomie to niestety zajmie to sporo miejsca we Flash i nie ma co liczyć na realizację zawrotnych prędkości - ale bez przesady - da się !!!! nawet z prędkościami 115200 bps !!!!!!!!! Jak mówię o zawrotnych to np 3MBit/s
Wtedy warto przesiąść się na C a szczególnie że w drugiej części mojej książki mam nadzieję że pięknie odczaruję tą transmisję ASCII, której wszyscy się tak boją
spójrz na ostatni element z listy tego co będzie w tej książce - szczerze ci to polecam i nie tylko tobie, ma to w linku poniżej:
post4396.html#p4396wracając do Bascoma - zanim poznałem C to z powodzeniem w ten opisany przeze mnie sposób i z użyciem buforowania dobrze przygotowanego przez Bascom - realizowałem transmisje w sterownikach swoich pracujących na RS232 ale i na RS485