26.10.2014 Views

E - Avtomatika

E - Avtomatika

E - Avtomatika

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3 = sprejeto je bilo predvideno št. znakov,<br />

4 = čas sprejema je potekel.<br />

Analiza sporočila (Parse)<br />

Po sprejemu sporočila ga je potrebno preveriti, če sta format<br />

in vsebina veljavna in vsebino spremeniti v spremenljivke v<br />

krmilniku. Če je format točno določen, je to dokaj enostavno.<br />

Vendar je bolje napisati nekoliko zmogljivejšo subrutino, ki bi<br />

preprečevala, da se celo sporočilo zavrne zaradi enega slučajno<br />

dodanega presledka ali kaj podobnega.<br />

Funkcije, ki služijo analizi sporočila, so nalednje:<br />

rx_bufrd(position:int): vrne vrednost v razponu 0 - 255 za<br />

določeno mesto v sprejemnem bufferju.<br />

rx_strcmp(position:int, str:string): postane true, če je določeno<br />

zaporedje znakov enako tistemu v sprejemnem bufferju.<br />

rx_strpos(position:int, str:string): vrne išče določeno zaporedje<br />

znakov, začenši z dane pozicije v bufferju; če ga najde,<br />

vrne pozicijo prvega znaka v bufferju, sicer -1.<br />

rx_strtoi(position:int): vrne integer vrednost števila, začenši<br />

z dane pozicije; če je ta znak ali vsak naslednji presledek,<br />

nadaljuje, dokler ne najde prvega števila. Zaključi, ko najde<br />

prvi znak, ki ni število.<br />

rx_strtol(position:int): enako kot zgoraj, vendar vrne long<br />

vrednost.<br />

rx_strtor(position:int): enako kot zgoraj, vendar vrne real<br />

vrednost.<br />

Še kratek primerček analize sporočila:<br />

if rx_strpos(0,'OPEN')-1 then<br />

main_valve=1;<br />

end_if;<br />

if rx_strpos(0,'CLOSE'-1 then<br />

main_valve=0;<br />

end_if;<br />

position=rx_strpos(0, 'TEMP=');<br />

if position-1 then<br />

set_point=rx_strtoi(position+5);<br />

end_if<br />

position=rx_strpos(0,)CYCLE?);<br />

if position-1 then<br />

cycle_timer.pt=rx_strtol(position+6);<br />

end_if;<br />

A<br />

Nadaljevanje prihodnjič!<br />

30 28/2002<br />

AVTOMATIKA

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!