adding files
This commit is contained in:
120
my-3d/hal_extruder_temp_ctrl.py
Normal file
120
my-3d/hal_extruder_temp_ctrl.py
Normal file
@@ -0,0 +1,120 @@
|
||||
#!/usr/bin/python3
|
||||
import getopt
|
||||
import hal
|
||||
import sys
|
||||
import comms
|
||||
import time
|
||||
|
||||
class HalAdapter:
|
||||
def __init__(self, name):
|
||||
self.hal = hal.component(name) # instanciate the HAL-component
|
||||
self.hal.newpin("ref-temp", hal.HAL_U32, hal.HAL_IN)
|
||||
self.hal.newpin("enable", hal.HAL_BIT, hal.HAL_IN)
|
||||
self.hal.newpin("curr-temp", hal.HAL_U32, hal.HAL_OUT)
|
||||
self.hal.newpin("ref-temp-out", hal.HAL_U32, hal.HAL_OUT)
|
||||
|
||||
self.hal.ready()
|
||||
|
||||
def setReady(self):
|
||||
self.hal.ready()
|
||||
|
||||
def readHAL_refTemp(self):
|
||||
"""read values from LinuxCNC HAL"""
|
||||
return self.hal['ref-temp']
|
||||
|
||||
def readHAL_enable(self):
|
||||
"""read values from LinuxCNC HAL"""
|
||||
return self.hal['enable']
|
||||
|
||||
def writeHAL_currTemp(self, val):
|
||||
""" write internal wrapper pin values to LinuxCNC HAL """
|
||||
self.hal['curr-temp'] = val
|
||||
|
||||
def writeHAL_refTemp(self, val):
|
||||
""" write internal wrapper pin values to LinuxCNC HAL """
|
||||
self.hal['ref-temp-out'] = val
|
||||
|
||||
class TempControllerFacade:
|
||||
def __init__(self, port):
|
||||
self.tempController = comms.instrument(port, self.msgHandler) #serial adaptor
|
||||
self.currTemp = 100
|
||||
self.refTemp = 100
|
||||
self.enable = False
|
||||
|
||||
def __repr__(self):
|
||||
return 'curr temp: ' + str(self.currTemp) + ', ref temp: ' + str(self.refTemp) + ' , enabled; ' + str(self.enable) + '\n'
|
||||
|
||||
def msgHandler(self, m):
|
||||
if (m.name == 'mv'):
|
||||
self.currTemp = int(m.data)
|
||||
|
||||
def setEnable(self, en):
|
||||
self.enable = en
|
||||
print('extruder temp controller enable: ' + str(self.enable))
|
||||
|
||||
if en == True:
|
||||
self.tempController.writeMessage(comms.Message('en' , '1'))
|
||||
else:
|
||||
self.tempController.writeMessage(comms.Message('en' , '0'))
|
||||
|
||||
|
||||
def setRefTemp(self, refT):
|
||||
if self.enable == True:
|
||||
if self.refTemp != refT:
|
||||
self.tempController.writeMessage(comms.Message('sp' , str(refT)))
|
||||
self.refTemp = refT
|
||||
|
||||
|
||||
def main():
|
||||
name = 'my-extruder'
|
||||
port = '/dev/ttyUSB0' # default serial port to use
|
||||
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:], "hp:c:", ["port="])
|
||||
except getopt.GetoptError as err:
|
||||
# print help information and exit:
|
||||
print(err) # will print something like "option -a not recognized"
|
||||
sys.exit(2)
|
||||
|
||||
for o, a in opts:
|
||||
if o == "-h":
|
||||
sys.exit()
|
||||
if o == "-c":
|
||||
name = a
|
||||
elif o in ("-p", "--port"):
|
||||
port = a
|
||||
else:
|
||||
print(o)
|
||||
assert False, "unhandled option"
|
||||
|
||||
h = HalAdapter(name)
|
||||
tc = TempControllerFacade(port)
|
||||
#tc.setEnable(True)
|
||||
|
||||
print(tc)
|
||||
|
||||
try:
|
||||
while 1:
|
||||
tc.tempController.readMessages()
|
||||
|
||||
if h.readHAL_enable() == 1:
|
||||
if tc.enable == False:
|
||||
tc.setEnable(True)
|
||||
else:
|
||||
if tc.enable == True:
|
||||
tc.setEnable(False)
|
||||
|
||||
if tc.enable == True:
|
||||
refTemp = h.readHAL_refTemp()
|
||||
tc.setRefTemp(refTemp)
|
||||
|
||||
h.writeHAL_currTemp(tc.currTemp)
|
||||
h.writeHAL_refTemp(tc.refTemp)
|
||||
#
|
||||
time.sleep(1)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
raise SystemExit
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user