| |
|
|
Pedro Miguel | Hallo,
Bis jetzt habe ich mit der serielle schnittstelle Texte empfangen. Habe nonne sie holt neues Projekt auch im der ich von eine elektronische Platine binäre Daten empfangen und sofort auswerten muss. würfel Auswertung sieht folgendes Masse sagtet. Es werden von der Platine kontienurlich 12 bis 16 Bytes gesendet. schließt der Xprofan seite muss ich würfel Bytes empfangen und sofort würfel einzelnen Bits durch TestBit auswerten um damit geführten Graphiken als AUF OFF anzuzeigen. würfel baurate wer 38400, 8 Bits, keiner, 1 Stopbit
Weiss jemand ob das mit Xprofan zu machen wer?
Danke für jede Unterstützung
Gruss Pedro |
|
|
| |
|
|
|
| Da XProfans Strings binärsicher sind gibts keinen Unterschied zwischen Text oder
Binärdaten auslesen per ReadCom$ -
einfach ReadCom$ verwenden. Den Bytewert eines (Ansi-) Zeichens aus einem
XProfan-String einfach z.B. per byte(addr$(string$),num&) auslesen. KompilierenMarkierenSeparieren Nach ähnlichem Verfahren lese ich die Daten mobiler Barcode-Scanner aus. |
|
|
| |
|
|
|
Pedro Miguel | Hallo iF,
Danke, werde es am Wochenende testen
Von der Platine wird z.b gesendet.
master = 254 destiny = 18 txcoma = 7 total = 1234
printbin master,destiny,total,txcoma
Die Bytes und Words werden ohne jeglichen Trenzeichen gesendet
Nach den Testen gebe ich Feedback und komme nochmal darauf zurück
Gruss Pedro |
|
|
| |
|
|
|
GDL | Hallöle,
ist zwar purer Anfängercode, aber er geht bei mir auf allen meinen Anlagen und Rechnern.
Das Problem ist, dass du 2 Protokolle hast. Ein Protokoll über das gültige Zeichen und ein Protokoll über die Zeichenfolge. Bei mir bilden drei 255 und eine 0 in Reihe den Beginn eines Datenprotokoll. KompilierenMarkierenSeparieren
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
endif
wend
Vielleicht kannst du dir was abguggen. Wie gesagt, das ganze würde ein Profi bestimmt anders lösen. |
|
|
| |
|
|