| |
|
|
GDL | Hi,
Perhaps can it one Hobbybastler umgeändert (adjusted)need. so synchronisiere I mean Atmels without Handshaking in the endlosen Datenstrom. CompileMarkSeparationCOM Schnittstelle auslesen
Schnittstelle wird am Proganfang geöffnet und erst am Progende geschlossen
declare sync%,lb%
settext _text&[12],Einlesestatus : aktiv +time$(0)+ +left$(time$(1),5)
+ Zeitwechsel ist ein Einlesevorgang.
Schnittstelle auslesen 3mal 255 und 1mal 0 hintereinander ist Sync
Empfangsprotokoll 255 255 255 0 Bahnhof Punkt Lok Auswahl Fehlerbyte
Auswahl
254 = Stellpult
253 = Geschwindigkeit
252 = Standardgeschwindigkeit bei Umschalten auf Grün anfordern
ja
clear cstart%
clear sync%
clear lb%
comwert$=@ReadCom$(comi1&,1)
@ComError(comi1&)
case str$(ord(comwert$))=255:inc sync%
whilenot comwert$=
comwert$=@ReadCom$(comi1&,1)
@ComError(comi1&)
case str$(ord(comwert$))=255:inc sync%
If str$(ord(comwert$))=0 Beginn des Datenprotokolls
Hat hier nichts mit Start,Stopbit zu tun, sondern ersetzt das Handshaking
if sync%=3
lb%=1 Die drei 255 Startbyte wurden beim folgendem Nullbyte erkannt
else
clear sync%
clear cstart%
clear lb%
endif
endif
if lb% =1
inc cstart%
_inhalt%[cstart%]=ord(comwert$)
endif
if cstart% = 5
clear cstart%
clear sync%
clear lb%
if _inhalt%[5]=253
settext _text&[8],Lok : +right$(00+str$(_inhalt%[4]),3)
auswerten1
Falls dieser BMelder etwas auslöst
tasterbahnhof%=_inhalt%[2]
tasterwert%=_inhalt%[3]
tasterwert%=tasterwert%+(tasterbahnhof%*256)-256 Punkte gehen hier von 1 bis 999
bm_auswerten
elseif _inhalt%[5]=254
settext _text&[8],Taster : +right$(00+str$(_inhalt%[3]),3)
settext _text&[9],Stellwerk : +right$(00+str$(_inhalt%[2]),3)
tasterbahnhof%=_inhalt%[2]
tasterwert%=_inhalt%[3]
auswerten
elseif _inhalt%[5]=252
settext _text&[8],Lok : +right$(00+str$(_inhalt%[4]),3)
real_speed
endif
endif
wend
sonst gibt es bei der thread.pcu Schlüsselfeldsalat
case wennoffen%=1:dbuse(#1)
case dannoffen%=1:dbuse(#2)
Hello Georg |
|
|
| |
|
|