Deutsch
Forum

Tasterfunktion mit Rolltor verknüpfen

 
Hallo,

also nun da ich ja schon ein wenig weiter bin mit meinem Programm habe ich hier noch die kleine Schwierigkeit den Taster also per Mousepressed mit dem Rolltor zu verknüpfen. Bedeutet ich will das Rolltor per Taster (aber nur solange er gedrückt wird) hoch und runterfahren lassen, sobald man die Taste loslässt soll das Tor aber stehen bleiben.
KompilierenMarkierenSeparieren
Window 1,1 - 1024,768
cls
declare hBild1&,hBild2&,hBild3&,hBild4&,hBild5&,hBild6&,hBild7&,hBild8&\
,hBild9&,hBild10&,hBild11&,hBild12&,hBild13&,hBild14&,hBild15&,hBild16&

Proc BMP

    hBild1&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tagn0.BMP")
    hBild2&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tagn1.BMP")
    hBild3&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tart0.BMP")
    hBild4&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tart1.BMP")
    hBild5&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\nota1.BMP")
    hBild6&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\trt1.BMP")
    hBild7&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\trt0.BMP") ;Störungsleuchte ein
    hBild8&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tabl0.BMP")
    hBild9&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tge0.BMP")
    hBild10& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tgn1.BMP")
    hBild11& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\sertar1.BMP")
    hBild12& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\sertar0.BMP")
    hBild13& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\objekte\\druckzr.BMP")
    hBild14& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\objekte\\emotl1.BMP")
    hBild15& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\lichtschr.BMP")
    hBild16& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\objekte\\rolltor.BMP")

Endproc

Proc BMP1

    roundrect 600,130-500,300;30,30
    rectangle 1,290-200;0
    DrawSizedPic hBild1&,40,50 - 30,30;0
    DrawSizedPic hBild1&,40,210 - 30,30;0
    DrawSizedPic hBild1&,40,170 - 30,30;0
    DrawSizedPic hBild1&,40,250 - 30,30;0
    DrawSizedPic hBild3&,40,130 - 30,30;0
    DrawSizedPic hBild3&,40,10 - 30,30;0
    DrawSizedPic hBild5&,120,10 - 30,30;0
    DrawSizedPic hBild8&,120,50 - 30,30;0
    DrawSizedPic hBild6&,120,130 - 30,30;0
    DrawSizedPic hBild9&,120,170 - 30,30;0
    DrawSizedPic hBild10&,120,210 - 30,30;0
    DrawSizedPic hBild10&,225,125 - 30,30;0
    DrawSizedPic hBild10&,225,215 - 30,30;0
    DrawSizedPic hBild6&,225,305 - 30,30;0
    DrawSizedPic hBild12&,255,305 - 30,30;0
    DrawSizedPic hBild11&,255,215 - 30,30;0
    DrawSizedPic hBild12&,255,125 - 30,30;0
    DrawSizedPic hBild13&,420,305 - 30,30;0
    DrawSizedPic hBild14&,420,120 - 40,40;0
    DrawSizedPic hBild15&,390,350 - 30,30;0
    rem DrawSizedPic hBild16&,270,130 - 160,220;0
    DrawSizedPic hBild3&,510,140 - 30,30;0
    DrawSizedPic hBild1&,510,180 - 30,30;0
    DrawSizedPic hBild1&,510,220 - 30,30;0
    DrawSizedPic hBild1&,510,260 - 30,30;0

Endproc

Proc Texte

    Locate 2,2
    Print "Aus"
    Locate 5,2
    Print "Ein"
    Locate 8,5
    Print "Anlage"
    Locate 12,2
    Print "STOP"
    Locate 15,2
    Print "AUF"
    Locate 18,2
    Print "HALB"
    Locate 21,2
    Print "ZU"
    Locate 23,6
    Print "Tor"
    Locate 2,10
    Print "Notaus"
    Locate 5,10
    Print "verriegelt"

endproc

rem Ausführung der Prozeduren
BMP
BMP1
Texte

Proc Taster1

    While %mousepressed

        DrawSizedPic hBild2& ,40 , 50 - 30, 30; 0

    EndWhile

    DrawSizedPic hbild1& ,40 , 50 - 30, 30; 0

Endproc

Proc Rolltor

    mLoadBmp "D:\\Xprofan\\BMP\\Objekte\\rolltor.BMP"
    startPaint -1
    usepen 0,0,$FFFFFF
    line 0,181 - 127,181
    endPaint

endproc

Proc Torzu

    whileLoop 182,0,-1

        mCopyBmp 0,&loop - 127,182 > 290,140 ; 0
        sleep 30

    wend

endproc

Proc Torauf

    Taster1

    whileLoop 182

        mCopyBmp 0,&loop - 127,182 > 290,140 ; 0
        sleep 30

    wend

endproc

Rolltor
Torzu
Torauf

While 1

    waitinput

    if @Mouse (40,50 - 30,30)

        offset%=0
        Taster1

    Elseif @Mouse (40,50 - 30,90)

        offset%=50
        Taster1

    Elseif @Mouse (40,50 - 30,140)

        offset%=100
        Taster1

    Elseif @Mouse (10,0 - 30,190)

        offset%=150
        Taster1

    else

        @Mouse (10,160 - 30,190)
        Break

    Endif

Endwhile

Proc Rolltor

    mLoadBmp "D:\\Xprofan\\BMP\\Objekte\\rolltor.BMP"
    startPaint -1
    usepen 0,0,$FFFFFF
    line 0,181 - 127,181
    endPaint

endproc

Proc Torzu

    whileLoop 182,0,-1

        mCopyBmp 0,&loop - 127,182 > 100,100 ; 0
        sleep 30

    wend

endproc

Proc Torauf

    waitInput

    whileLoop 182

        mCopyBmp 0,&loop - 127,182 > 100,100 ; 0
        sleep 30

    wend

endproc

Rolltor
Torzu
Torauf
end

921 kB
Version:11
Kurzbeschreibung: Bitmaps für das Programm
Hochgeladen:22.06.2011
Ladeanzahl88
Herunterladen
 
22.06.2011  
 



Im Endeffekt muss ich halt wissen wie ich am besten die prozeduren also die Taster und das Tor miteinander verknüpfe. Ob ich das mit mouseclicked oder @mouse usw. versuchen soll, es wäre schön wenn mir jemand ein kleines Beispiel basteln könnte
 
22.06.2011  
 



Einfach so:
KompilierenMarkierenSeparieren
cls
declare torhoehe&
var tor&=createText(%hWnd,"Tor",0,0,0,0)

while 1

    waitinput 10

    if external("user32","GetAsyncKeyState",1)

        case torhoehe&<100 : inc torhoehe&

    else

        case torhoehe& : dec torhoehe&

    endif

    setWindowPos tor&=10,10 - 100,torHoehe&;0

wend

 
22.06.2011  
 




Jörg
Sellmeyer
Wenn Du jetzt beide Maustasten verwendest, funktioniert es wie gewünscht:
KompilierenMarkierenSeparieren
cls
declare torhoehe&
var tor&=createText(%hWnd,"Tor",0,0,0,0)

while 1

    waitinput 10

    if external("user32","GetAsyncKeyState",1)

        case torhoehe&<100 : inc torhoehe&

    Elseif external("user32","GetAsyncKeyState",2)

        case torhoehe& : dec torhoehe&

    endif

    setWindowPos tor&=10,10 - 100,torHoehe&;0

wend

 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
22.06.2011  
 



Oder mit IsKey:
KompilierenMarkierenSeparieren
cls
declare torhoehe&
var tor&=createText(%hWnd,"Tor",0,0,0,0)

while 1

    waitinput 10
    torhoehe&=range(torhoehe&+iskey(1)*1+iskey(2)*-1,0,100)
    setWindowPos tor&=10,10 - 100,torHoehe&;0

wend

 
22.06.2011  
 




Jörg
Sellmeyer
Hier kann man noch etwas Rechenarbeit sparen:
KompilierenMarkierenSeparieren
torhoehe&=range(torhoehe&+iskey(1)-iskey(2),0,100)

Warum geht es nicht mit den Keycodes für "+" und "-"? Mit a und b geht's...
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
22.06.2011  
 



Hi, hehe und danke. Sollte vorher bevor ich das bearbeite erstmal das Programm an sich ein wenig übersichtlicher gestalten Ich muss sagen habe dennoch mit Xprofan meine Schwierigkeiten, ich werde mich nebenbei noch ein wenig mit C# Visual Studio beschäftigen, vielleicht liegt mir das einfach mehr
 
23.06.2011  
 



Ausser das man damit Formulare schön zusammenklicken kann ist alles andere eigentlich nur umständlicher als mit XProfan. Das Tor und die Steuerung hättest z.B. in Timer auslagern müssen und so wird z.B. aus scheinbar "einfachem Handling" schnell übler unzusammenhängender Code.
 
23.06.2011  
 



Oha, deswegen blockier ich mich da so hm hm Timer, mal Hilfe befragen^^ Aber danke, dennoch finde ich die schöne Kontext-Funktion der Befehle a la Excel sehr schön in VS C#, hilft ungemein weiter Aber versuche nun mal den Timer da mit einzubinden in Profan und mal schauen, werde wahrscheinlich das Prog dann nochmal neu schreiben, da die übersichtlichkeit aufgrund der Masse schon nicht mehr gegeben ist. Ich finde Profan halt manchmal in der Syntax recht komplex
 
23.06.2011  
 



Also um das ganze mal zu verkleinern kann ich die untere Prozedur auch mittels Schleife zu einer kleineren zusammenfassen in der er sich immer wieder der Bilder bedient? Ohne das ich jetzt wie vorher jedes einzelne Bild neu lade?
KompilierenMarkierenSeparieren
Proc BMP

    hBild1&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tagn0.BMP")
    hBild2&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tagn1.BMP")
    hBild3&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tart0.BMP")
    hBild4&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tart1.BMP")
    hBild5&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\nota1.BMP")
    hBild6&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\trt1.BMP")
    hBild7&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\trt0.BMP") ;Störungsleuchte ein
    hBild8&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tabl0.BMP")
    hBild9&  = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tge0.BMP")
    hBild10& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\tgn1.BMP")
    hBild11& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\sertar1.BMP")
    hBild12& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\sertar0.BMP")
    hBild13& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\objekte\\druckzr.BMP")
    hBild14& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\objekte\\emotl1.BMP")
    hBild15& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\Schalter\\lichtschr.BMP")
    hBild16& = @create ("HPic",-1,"D:\\Xprofan\\BMP\\objekte\\rolltor.BMP")

Endproc

 
23.06.2011  
 




Jörg
Sellmeyer
Ich würde an Deiner Stelle nur ein oder zwei Bilder verwenden.
Die ganz einfache Variante wäre dann so:
KompilierenMarkierenSeparieren
Declare bmp$,hBmp&,stBmp&
bmp$ = "Tor.bmp"
hBmp& = Create("hPic",-1,bmp$)
cls
declare torhoehe&
var tor&=Create("Bitmap",%hWnd,hBmp&,0,0,0,0)

while 1

    waitinput 10
    torhoehe&=range(torhoehe&+iskey(1)*1+iskey(2)*-1,0,100)
    setWindowPos tor&=10,10 - 100,torHoehe&;0

wend


Wenn Du noch Details am Tor haben willst (Griff oder auch ein Quermuster) mußt Du das Bild jeweils vorher in Speicher zusammensetzen und dann auf das Control legen. Dafür brauchst Du dann aber auch nur zwei Bilder (naja - je nach Detailreichtum...)


3 kB
Hochgeladen:23.06.2011
Ladeanzahl58
Herunterladen
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
23.06.2011  
 



Ok alles klar, ja das Problem ist das wir für ein echtes Rolltor halt die Schalttafel kopiert haben um das Ganze später am PC per SPS fernsteuern zu können. Daher sind aufgrund der Taster und Sensoren etc. die ganzen Bilder nötig.

Und durch meine "spezielle" Übersichtlichkeit ist das nicht ganz sooo einfach

Aber ich werde mir das gleich nochmal anschauen, denn mit c# habe ich schon in 5min nen Taschenrechner gebastelt über mehrere Methoden.
Macht Spass, Xprofan ist dagegen natürlich komplexer,also finde ich zumindest....
 
23.06.2011  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

9.201 Betrachtungen

Unbenanntvor 0 min.
Ernst30.04.2014
ho.schu08.03.2013
RudiB.08.11.2012
Pedro Miguel13.09.2012
Mehr...

Themeninformationen



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