Deutsch
Forum

Serielle Schnittstelle binäre Daten empfangen

 

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
 
30.10.2012  
 



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
'{$cleq}
cls
var s$="HALLO"
print byte(addr(s$),1),"= 65"
waitinput
end

Nach ähnlichem Verfahren lese ich die Daten mobiler Barcode-Scanner aus.
 
30.10.2012  
 




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
 
30.10.2012  
 




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.
 
Windows7 Xprofan 8,9,10 [...]  [...] 
10.11.2012  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.810 Betrachtungen

Unbenanntvor 0 min.
H.Brill26.09.2024
Langer04.01.2023
Walter08.02.2018
Pedro Miguel10.08.2015
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Pedro Miguel (2x)
GDL (1x)
iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie