Imam malo iskustva sa radom sa hardverom na COm portu, i koliko sam skontao, to je neki standard u komunikaciji...
Kada se neshto shalje, potrebno je da uredjaj zna odakle pochinje da chita, i dokle je jedna komanda... Postoje razlichite varijante, ali recimo, ono sa chim sam ja radio je bilo u obliku Chr$(3) [komanda] Chr$(2)
ASCII 3 oznachava pochetak transmisije, a ASCII 2 oznachava kraj... Sve izmedju je komandna kobasica (tako smo zbali to :))
E, sad, ovaj uredjaj prihvata komande duzhine 4 bajta, i bez ASCII 2... Ok... Uzmimo za primer sledetju liniju:
If led = "5" Then send$ = Chr$(3) + Chr$(1) + Chr$(16) + Chr$(18): GoTo prikaz
Chr$(3) oznachava pochetak komande
Chr$(1) verovatno oznachava komandu UPALI
Chr$(16) mu dodje LED 5
E sad, Chr$(18) je cheksum, koji se rachuna na klasichan nachin XOR-ovanjem prva 3 bajta komande... Tako kontroler diodica, zna da je komanda ispravna Dakle 3 XOR 1 XOR 16 = 18
E sad, kad hotjesh da palish neke diode, idesh po ovom obrascu:
LED1 = 1
LED2 = 2
LED3 = 4
LED4 = 8
LED5 = 16
LED6 = 32
LED7 = 64
LED8 = 128
E sad, recimo hotjesh diode 2, 3 i 7 upaljene... Nema neke teshke filozofije, to uradish tako shto postavljash 2, 3 i 7 bit na 1, ovako:
Dim upali as byte
upali = 2 Or 4 Or 64
Posle taj bajt dodash onoj kobasici, i voila, radi... Mozhesh da chuvash trenutno stanje, pa da palish i gasish diode po potrebi... Menjanje stanja bita radish sa XOR... Tako da bi:
upali = upali XOR 4
ugasilo LED3
Mislim da tje ovo da ti pomogne sa dilemom... Nema IF-ova, nema njackanja, samo prosta manipulacija bitovima... A uz to, i kratji i pregledniji kod :)
Vichi ako negde zapne...
"I have never let my schooling interfere with my education." - Mark Twain