Forum | | | | | 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. KompilierenMarkierenSeparierenWindow 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
|
| | | | |
| | | 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 |
| | | | |
| | | | | | | |
| | Jörg Sellmeyer | Wenn Du jetzt beide Maustasten verwendest, funktioniert es wie gewünscht: KompilierenMarkierenSeparierencls
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 ▲ |
| |
| | | | | | | |
| | Jörg Sellmeyer | Hier kann man noch etwas Rechenarbeit sparen: KompilierenMarkierenSeparieren 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 |
| | | | |
| | | 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. |
| | | | |
| | | 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 |
| | | | |
| | | 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
|
| | | | |
| | Jörg Sellmeyer | Ich würde an Deiner Stelle nur ein oder zwei Bilder verwenden. Die ganz einfache Variante wäre dann so: KompilierenMarkierenSeparierenDeclare 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...)
|
| | | 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.... |
| | | | |
|
AntwortenThemenoptionen | 9.201 Betrachtungen |
ThemeninformationenDieses Thema hat 5 Teilnehmer: |