----------------------------------- Sorin Sfartz 19 Oct 2018 08:12 ----------------------------------- Pai e o conditie care verifica daca comanda primita de la SkySafari incepe cu ´$´. Modulul bluetooth trimite la initializare un sir de genul $$$, care perturba comunicatia cu montura. Din cauza lui nu se conecta SkySafari. Daca sirul inStrWifi (care ipotetic contine comanda trimisa de skysafari), incepe cu $, se citesc in continuare caractere din sir pana se termina toate caracterele ´$´. Orice insiruire de 2 sau mai multi dolari e ignorata. Apoi in eventualitatea in care in buffer s-au acumulat dupa sirul de caractere $$$ si alte caractere utile, dupa ce se termina toti dolarii sunt acumulate (eventualele caractere utile) in alt sir (realString) care este trimis la montura ca si comanda. Nu sunt sigur ca asta e abordarea cea mai buna. Daca or exista protocoale care sa inceapa cu $$ sau cu $$$ sau $$$$ etc, programul asta va ignora astfel de secvente. Prima data am exclus complet orice $ din comenzile primite, dar chestia asta nu merge pentru ca protocolul celestron trimite si caractere $ in comenzile de slew de exemplu. In fapt protocolul asta celestron e cel mai idiot protocol pe care l-am vazut: trimite zeci de caractere netiparibile - daca nu te uiti la byte-ul efectiv receptionat, nici nu stii ce e acolo. In plus cel mai agasant e faptul ca nu foloseste terminatori. ioptron termina orice comanda cu #. Skywatcher incepe orice comanda cu : si o termina cu CR. Ideea e ca daca apar erori la transferul de date, in protocoalele normale stii sa izolezi datele utile, stii daca pachetul de date e corupt etc. La celestron nu stii nimic. Iar daca trimiti ceva eronat la montura, aceasta incepe sa raspunda haotic si trimite sute de caractere complet aiurea. Cel putin CGEM-ul meu asa face.