| |
|
|
Pedro Miguel | Hallo,
Bis jetzt habe ich mit der serielle schnittstelle Texte empfangen. Habe nun ein neues Projekt in der ich von eine elektronische Platine binäre Daten empfangen und sofort auswerten muss. Die Auswertung sieht folgendes Masse aus. Es werden von der Platine kontienurlich 12 bis 16 Bytes gesendet. Auf der Xprofan seite muss ich die Bytes empfangen und sofort die einzelnen Bits durch TestBit auswerten um damit Led Graphiken als ON OFF anzuzeigen. Die baurate ist 38400, 8 Bits, None, 1 Stopbit
Weiss jemand ob das mit Xprofan zu machen ist?
Danke für jede Unterstützung
Gruss Pedro |
|
|
| |
|
|
|
| là XProfans Cordes binärsicher sommes gibts keinen Unterschied entre Text ou bien
Binärdaten auslesen per ReadCom$ -
simple ReadCom$ verwenden. Den Bytewert eines (Ansi-) Zeichens aus einem
XProfan-String simple z.B. per byte(addr$(string$),num&) auslesen. KompilierenMarqueSéparation Pour ähnlichem procéder lese je qui données mobiler Barcode-Scanner aus. |
|
|
| |
|
|
|
Pedro Miguel | allô iF,
merci, werde es am Wochenende testen
de qui Platine wird z.b gesendet.
master = 254 destiny = 18 txcoma = 7 total = 1234
printbin master,destiny,total,txcoma
qui Bytes et Words volonté sans jeglichen Trenzeichen gesendet
Pour den Testen gebe je Feedback et viens nochmal puis zurück
Gruss Pedro |
|
|
| |
|
|
|
GDL | Hallöle,
ist zwar purer Anfängercode, mais il va chez mir sur allen meinen Anlagen et Rechnern.
cela Problem ist, dass du 2 Protokolle la hâte. un Protokoll sur cela gültige marque et un Protokoll sur qui Zeichenfolge. chez mir bilden trois 255 et une 0 dans Reihe den Beginn eines Datenprotokoll. KompilierenMarqueSéparation
proc einlesen'BMelder Stellpulttaster
'COM 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%
'Fehlerbyte erzeugen
'Fehlerbyte vergleichen
'Bei Fehler _inhalt%[5]=0
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
Wend
peut-être peux du dir quoi abguggen. Comme je le disais, cela ganze serait un Profi bestimmt anders lösen. |
|
|
| |
|
|