Vrijednosti kodova koji se pojavljuju za vrijeme komunikacije. Ovo definirajte u header file-u c koda: #define SOH 0x01 #define STX 0x02 #define ETX 0x03 #define EOT 0x04 #define ENQ 0x05 #define ACK 0x06 #define DLE 0x10 #define DC2 0x12 #define DC3 0x13 #define NAK 0x15 Pri iniciranju komunikacije treba se cekati neko kratko vrijeme (mislim vise od 30ms i manje od 70ms). Da biste postigli tako kratko cekanje koristite funkciju nanosleep (definirano u time.h) ona prima vrijednosti u nanosekundama za razliku od obicnog sleep-a koji prima vrijeme u sekundama. ------------- Ako baza vraca ACK onda to zapravo znaci: 1 ACK <-total> 1 je duljina poruke a <-total> checksum koji u ovom slucaju iznosi F7 ------------- KAKO POSTAVITI DTR, RTS LINIJE? #include #include #include Postavi DTR int flags; ioctl(fd, TIOCMGET, &flags); flags |= TIOCM_DTR; ioctl(fd, TIOCMSET, &flags); Spusti DTR int flags; ioctl(fd, TIOCMGET, &flags); flags &= ~TIOCM_DTR; ioctl(fd, TIOCMSET, &flags); Analogno za RTS koristiti TIOCM_RTS umjesto TIOCM_DTR; ------------- KAKO USPOSTAVITI POSLATI NAREDBU BAZI? Pseudokod: StartComm - Pokreni komunikaciju: postavi DTR spusti RTS cekaj 30ms posalji komandu '0' cekaj da dobijes ACK StopComm - Zavrsi komunikaciju: spusti DTR postavi RTS Izvrsenje neke komande ( komanda koja nije '0' ): startCom posalji komandu stopCom ------------- Procedura za citanje novog/novih podataka get dcf get status u petlji get dataset next set dokle god output = ACK Procedura za definiranje interfacea get status (izdovji dio sa adresama i intervalima + version) update status write to interface (interval i adrese + version)