Italia
Foro

Processe mit Settext/Gettext$ ...corre wunderbar.

 

funkheld
Hallo, mit den Processen corre es jetzt wunderbar.
Ich habe hier ein Beispiel mit Daten zum Process circa Settext/Gettext$, also ohne Filmap usw.

Ein Hauptfenster per den Roboter, wo die Entfernungen die er circa WLan schickt von XProfan dargestellt werden. Die WLan-Daten werden circa 1 Process empfangen und gesendet. 1 Process habe ich eine serielle Datenübertragung und 1 Process werden Pixel ausgegeben.

Also ein tolle Sache mit den Processen, wunderbar.
Ich wollte mal das Verhalten prüfen.

Wann wird das Hauptprogramm mal ins holpern kommen mit den vielen Processen?

Gruss
 {$cle}
 {$PUSHKEYWORD pExec}
declare b_vor&,b_zur&,zielfenster&
declare b_links&,b_hlinks&,b_mitte&,b_hrechts&,b_rechts&
declare b_v0&,b_v1&,b_v2&
declare b_ser0&,b_ser1&,b_sharp&,b_ton&,b_cls&
declare ende&,text$,bpic&,bpich&,wert&,hw&,ht&,hx&,hy&,p&,p1&,p2&,htext&,hd1&
declare x!,y!,wtest&,color&
windowtitle "send"
Window 20,20-700,650
color&=rgb(160,160,160)
cls color&
bpic& = create("hNewPic", 400,400,rgb(255,255,255))
bpich& = create("hNewPic", 400,400,rgb(255,255,255))
b_vor& = Create("Button",%HWnd,"vor", 10, 20, 80, 24)
b_zur& = Create("Button",%HWnd,"zurück", 10, 45, 80, 24)
b_links& = Create("Button",%HWnd,"links", 10, 70, 80, 24)
b_hlinks& = Create("Button",%HWnd,"hlinks", 10, 95, 80, 24)
b_mitte& = Create("Button",%HWnd,"mitte", 10, 120, 80, 24)
b_hrechts& = Create("Button",%HWnd,"hrechts", 10, 145, 80, 24)
b_rechts& = Create("Button",%HWnd,"rechts", 10, 170, 80, 24)
b_v0& = Create("Button",%HWnd,"v0", 10, 195, 80, 24)
b_v1& = Create("Button",%HWnd,"v1", 10, 220, 80, 24)
b_v2& = Create("Button",%HWnd,"v2", 10, 245, 80, 24)
b_ser0& = Create("Button",%HWnd,"ser0", 10, 270, 80, 24)
b_ser1& = Create("Button",%HWnd,"ser1", 10, 295, 80, 24)
b_sharp& = Create("Button",%HWnd,"sharp", 10, 320, 80, 24)
b_ton& = Create("Button",%HWnd,"ton", 10, 345, 80, 24)
b_cls& = Create("Button",%HWnd,"cls", 120, 20, 40, 24)
hw& = create("Edit", %HWnd, "", 100,500,60,20)
ht& = create("Edit", %HWnd, "", 100,525,60,20)
hx& = create("Edit", %HWnd, "", 100,550,90,20)
hy& = create("Edit", %HWnd, "",100,575,90,20)
htext& = create("Edit", %HWnd, "",0,0,0,0)
hd1& = create("Edit", %HWnd, "",300,500,90,20)
startpaint bpic&
UsePen 0,1,$ff0000
EndPaint
startpaint %HWnd
drawpic bpic&,200,20;0
DrawText 20, 500, "Entfernung"
DrawText 20, 525, "Status"
DrawText 20, 550, "XPosition"
DrawText 20, 575, "YPosition"
DrawText 245, 500, "seriell"
EndPaint
p& = pExec("|Prozess",hw&,ht&,hx&,hy&,htext&)
sleep 200
p1&=pExec("|Prozess1",%HWnd, hd1&)
sleep 200
p2&=pExec("|Prozess2")
sleep 200
ZielFenster& = FindWindow("roboter")
ende&=1

While ende&

    WaitInput

    If Clicked(b_vor&)

        text$="1,0,vor"
        WriteStr(text$)

    elseIf Clicked(b_zur&)

        text$="1,0,zur"
        WriteStr(text$)

    elseIf Clicked(b_links&)

        text$="1,0,links"
        WriteStr(text$)

    elseIf Clicked(b_hlinks&)

        text$="1,0,hlinks"
        WriteStr(text$)

    elseIf Clicked(b_mitte&)

        text$="1,0,mitte"
        WriteStr(text$)

    elseIf Clicked(b_hrechts&)

        text$="1,0,hrechts"
        WriteStr(text$)

    elseIf Clicked(b_rechts&)

        text$="1,0,rechts"
        WriteStr(text$)

    elseIf Clicked(b_v0&)

        text$="1,0,v0"
        WriteStr(text$)

    elseIf Clicked(b_v1&)

        text$="1,0,v1"
        WriteStr(text$)

    elseIf Clicked(b_v2&)

        text$="1,0,v2"
        WriteStr(text$)

    elseIf Clicked(b_ser0&)

        text$="1,0,ser0"
        WriteStr(text$)

    elseIf Clicked(b_ser1&)

        text$="1,1,ser1"
        WriteStr(text$)

    elseIf Clicked(b_sharp&)

        text$="1,2,sharp"
        WriteStr(text$)

    elseIf Clicked(b_ton&)

        text$="1,0,ton"
        WriteStr(text$)

    EndIf

    If Clicked(b_cls&)

        startpaint bpic&
        drawpic bpich&,0,0;0
        EndPaint
        startpaint %HWnd
        drawpic bpic&,200,20;0
        EndPaint

    EndIf

    wtest&=val(gettext$(ht&))
    x!=val(gettext$(hx&))
    y!=val(gettext$(hy&))

    if wtest& = 1

        startpaint bpic&
        UsePen 0,1,$0000ff
        Line 200,200-200+x!,200+y!
        EndPaint
        startpaint %HWnd
        drawpic bpic&,200,20;0
        EndPaint

    endif

    if wtest& = 2

        startpaint bpic&
        UsePen 0,1,$ff00
        Line 200,200-200+x!,200+y!
        EndPaint
        startpaint %HWnd
        drawpic bpic&,200,20;0
        EndPaint

    endif

endwhile

end

Proc WriteStr

    Parameters Text$
    settext htext&,text$
    PostMessage(ZielFenster&, $1000, 0, 0)

EndProc

Proc Prozess

    Parameters hw&,ht&,hx&,hy&,htext&
    Declare ende&,text$,test&,test1&,wtest&,wert&,x!,y!,winkel!,urlpart$
    Declare HandleMap&, ViewPointer&, Buffer#
    windowtitle "roboter"
    window 720,20 - 200, 200
    Ende& = 0
    UserMessages $1000

    WhileNot ende&

        waitinput 100

        If %UMessage = $1000

            text$ = gettext$(htext&)
            test1&=val(substr$(text$,1,","))

            if test1& > 0

                test&=1
                wtest&=val(substr$(text$,2,","))
                urlpart$=substr$(text$,3,",")
                print text$
                text$=""

            endif

        endif

        if test&=1

            downloadfile("https://192.168.2.101/?pin="+urlpart$)
            test&=0

        else

            downloadfile("https://192.168.2.101/?pin=leer")

        endif

        while %Loading

            sleep 10

        endwhile

        wert&=str$(ord($download))

        if wtest&=1

            winkel!=winkel!+1.6

            if winkel! > 180.0

                wtest&=0
                winkel!=0

            endif

            x!=Sin(winkel!*0.0174532925199433)*wert&
            y!=Cos(winkel!*0.0174532925199433)*wert&

        endif

        if wtest&=2

            winkel!=winkel!+1.6

            if winkel! > 180.0

                wtest&=0
                winkel!=0

            endif

            x!=Sin((winkel!+180)*0.0174532925199433)*wert&
            y!=Cos((winkel!+180)*0.0174532925199433)*wert&

        endif

        setText hw&,str$(wert&)
        setText ht&,str$(wtest&)
        setText hx&,str$(x!)
        setText hy&,str$(y!)

    EndWhile

endProc

Proc Prozess1

    parameters win&,hd1&
    declare ende&,f&,wert&
    declare text$
    f& = OpenCom("COM1",1024,1024)
    SetCom("COM1:19200,N,8,1")
    windowtitle "seriell"
    window 920,20 - 200,200
    print "Process Seriell"
    ende& = 0

    whilenot ende&

        Case GetText$(win&) = "" : ende& = 1
        GetComInput f&

    endwhile

    Proc GetComInput

        text$ = ReadCom$(f&,128,128)
        wert&=Ord(text$)

        if wert& > 0

            setText hd1&, str$(wert&)

        endif

    EndProc

endproc

Proc Prozess2

    declare ende&,bild&
    windowtitle "pixel"
    Window 1120,20-200,200
    erzeugebild()
    ende&=1

    WHILE ende&

        waitkey

    ENDWHILE

    proc erzeugebild()

        Declare x&,y&

        whileloop 1,199

            y&=&loop

            WhileLoop 1,199

                startpaint %HWnd
                x&=&loop
                sleep 1
                SetPixel x&,y&,rgb(255,0,0)

            EndWhile

        EndWhile

    endproc

endproc


96 kB
Hochgeladen:17.04.2016
Downloadcounter148
Download
96 kB
Hochgeladen:17.04.2016
Downloadcounter123
Download
 
17.04.2016  
 



funkheld (17.04.2016)
Wann wird das Hauptprogramm mal ins holpern kommen mit den vielen Processen?


Die Abarbeitung:
If %UMessage = $1000

    text$ = gettext$(htext&)
    test1&=val(substr$(text$,1,","))
scheint mir nicht konsistent da die UserMessages asynchron einflattern und in dieser Zeit htext& "längst" neu beschrieben werden potuto. Der jeweils andere Prozess sollte aktiv auf ein Gegenzeichen warten.
 
17.04.2016  
 




H.Brill
Die anderen Parameter wparam und lparam
bei SendMessage / Postmessage kannst du ja
auch noch nutzen. Damit kannst du z.B. signalisieren,
ob sich im Hauptprogramm etwas geändert hat.

Der Prozess, dem die Message gilt, kann dann
circa &uwParam oder &ulParam das erkennen
und entsprechend reagieren.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
17.04.2016  
 




funkheld
Danke per die Antworten.

Wie kann man diese Aussage dann bitte umsetzen in einem Process:
......Der jeweils andere Prozess sollte aktiv auf ein Gegenzeichen warten....

Gruss
 
17.04.2016  
 




H.Brill
Was macht denn dein Programm genau ?

Wie ich das sehe, empfängt Prozess die
WLAN-Daten, Prozess1 empfängt was circa
die serielle Schnittstelle und Prozess2 malt
mit SetPixel was aufs Fenster.

Was IF wahrscheinlich meint, ist, daß die
Prozesse Messages schicken, wenn was
bereit/fertig ist.

Also, wenn das Datenpaket circa WLAN gesendet
und die Daten berechnet wurden, informiert Prozess
den Prozess2, daß er malen kann. Dafür kann man
wunderbar die Parameter wParam und lParam von
SendMessage benutzen, um mit 0 oder 1 anzuzeigen,
daß Prozess fertig ist und Prozess2 beginnen kann.

Was die serielle Schnittstelle jetzt macht, habe ich
noch nicht rausbekommen.

Was mir noch auffiel :
Ich würde die Procs nicht unbedingt ineinander
verschachteln, also eine Proc in einer anderen Proc.

Das mag vielleicht immer gutgehen, aber verlassen
würde ich mich da nicht.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
18.04.2016  
 




funkheld
Ja danke per die Info.

Die RS232 ist erst nur zum Test in Betrieb und ist dann per Daten zuständig die parallel empfangen werden per das Hauptprogramm von eine Steuerplatine (Arduino). Zum Hauptprogramm sollen alle DatenFäden laufen und dann kommt eine Aktion darauf.

Also :
- Process-WLan zum Hauptprogramm
- Process-serielle Daten zum Hauptprogramm
- zuständige Daten zum Process Grafikfenster

so stelle ich mir das vor.

Danke.
Gruss
 
18.04.2016  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

5.001 Views

Untitledvor 0 min.
RudiB.08.01.2022
iF31.10.2020
Wilfried12.06.2016
Torsten Rümker10.05.2016
Di più...

Themeninformationen

Dieses Thema hat 3 subscriber:

funkheld (3x)
H.Brill (2x)
iF (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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