#!/usr/bin/python
import os
import hal, time

# h = hal.component("testx", wait_name='testx')
h = hal.component("testx")
h.newpin("in", hal.HAL_FLOAT, hal.HAL_IN)
h.newpin("out", hal.HAL_FLOAT, hal.HAL_OUT)
# pin spindelschmierung drehzahlueberwachung eingang
h.newpin("spindeltest", hal.HAL_BIT, hal.HAL_IN)

#pins fuer jog speed poti
h.newpin("jogpoti", hal.HAL_FLOAT, hal.HAL_IN) #poti fuer joggeschwindigkeit
h.newpin("jogout", hal.HAL_FLOAT, hal.HAL_OUT) #ausgabe der berechneten joggeschwindigkeit
h.newpin("eilgang_override", hal.HAL_BIT, hal.HAL_IN) #rote taste in der mitte der jog tasten fuer eilgang
h.newpin("jogout_halui", hal.HAL_FLOAT, hal.HAL_OUT) #ausgabe der berechneten joggeschwindigkeit fuer halui mit maxjog vel multipliziert


#pins fuer eilgang override poti
h.newpin("eilgangpoti", hal.HAL_FLOAT, hal.HAL_IN) #poti fuer eilganggeschwindigkeit
h.newpin("eilgangout", hal.HAL_FLOAT, hal.HAL_OUT) #ausgabe der berechneten joggeschwindigkeit

#pins fuer vorschub override poti
h.newpin("vorschubpoti", hal.HAL_FLOAT, hal.HAL_IN) #poti fuer eilganggeschwindigkeit
h.newpin("vorschubout", hal.HAL_FLOAT, hal.HAL_OUT) #ausgabe der berechneten joggeschwindigkeit



#maximal joggeschwindigkeit muss nidrigster wert aller Achsgeschwindigkeiten aus der INI sein.
maxjogvel=1200

time.sleep(0.5)

h.ready()

try:
    while 1:
	
        #time.sleep(1)
        #h['out'] = h['in']	
	#spindelschmierung alle 30 sec wird das magnetventil fuer 3 sek angesteuert
	if h['spindeltest'] == 1:
		 
		if spindel_schmieren == 1:
			schmierzeit=time.time()
			schmierabstand=time.time()		
			hal.set_p("hm2_5i25.0.7i84.1.0.output-00","1")
			hal.set_p("test.hal_led1","1")
			spindel_schmieren=0
		if time.time()-schmierzeit >= 3: 
			hal.set_p("hm2_5i25.0.7i84.1.0.output-00","0")
			hal.set_p("test.hal_led1","0")
		if time.time()-schmierabstand >= 30: 
			spindel_schmieren=1

	else:
		hal.set_p("hm2_5i25.0.7i84.1.0.output-00","0")
		#hal.set_p("test.hal_led1","0")
		spindel_schmieren=1

# ansteuerung der jog geschwindigkeit 
	if h['eilgang_override'] == 1:
		h['jogout'] = 1
	else:
		joggeschwindigkeit = h['jogpoti']
		joggeschwindigkeit = joggeschwindigkeit/11.8
		h['jogout'] = joggeschwindigkeit
	h['jogout_halui'] = h['jogout']*maxjogvel

# ansteuerung eilgangpoti
	eilgeschwindigkeit = h['eilgangpoti']
	eilgeschwindigkeit = eilgeschwindigkeit/11.8
	h['eilgangout'] = eilgeschwindigkeit
	 
# ansteuerung vorschubpoti
	vorgeschwindigkeit = h['vorschubpoti']
	vorgeschwindigkeit = vorgeschwindigkeit/11.7
	h['vorschubout'] = vorgeschwindigkeit


except KeyboardInterrupt:
    raise SystemExit
