hendiCtrl.py is now import-only. The new CLI app exposes serial port/baudrate, version/capability info, converter test, heater test, and firmware update as separate flags, instead of one fixed script. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GpePKZiEZWbGo9HrfuML6U
77 lines
2.1 KiB
Python
77 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
"""CLI tool for talking to a Hendi induction plate over serial - see
|
|
components/actor/hendiCtrl.py for the protocol/HendiCtrl class this wraps."""
|
|
|
|
import argparse as ap
|
|
import time
|
|
|
|
from components.actor.hendiCtrl import HendiCtrl
|
|
|
|
DEFAULT_PORT = '/dev/ttyUSB0'
|
|
DEFAULT_BAUDRATE = 115200
|
|
|
|
|
|
def print_version(hendi):
|
|
print(f"{hendi.getSoftwareIdentifier()}, F/W-Version: {hendi.getSoftwareVersion()}")
|
|
|
|
|
|
def print_capabilities(hendi):
|
|
print("Capabilities:", hendi.getCapabilties())
|
|
|
|
|
|
def test_converter(hendi):
|
|
print("Test converters")
|
|
for pwr in range(500, 3600, 100):
|
|
digits = hendi.toDigits(pwr)
|
|
power = hendi.toWatts(digits)
|
|
print(f"pwr={pwr} digits={digits} power={power}")
|
|
|
|
|
|
def test_heater(hendi):
|
|
print("Test Hendi")
|
|
with hendi.remote_open():
|
|
hendi.setSwitch(1)
|
|
time.sleep(1.0)
|
|
for pwr in range(500, 3600, 100):
|
|
hendi.setPowerWatts(pwr)
|
|
pw = hendi.getPowerWatts()
|
|
print("power_w", pw)
|
|
time.sleep(1.0)
|
|
|
|
hendi.setSwitch(0)
|
|
|
|
|
|
def update_firmware(hendi, filename):
|
|
hendi.firmware_update(filename)
|
|
|
|
|
|
def main():
|
|
parser = ap.ArgumentParser(description=__doc__)
|
|
parser.add_argument("--serial-port", default=DEFAULT_PORT)
|
|
parser.add_argument("--baudrate", type=int, default=DEFAULT_BAUDRATE)
|
|
parser.add_argument("--version", action="store_true", help="print software identifier/version")
|
|
parser.add_argument("--capabilities", action="store_true", help="print power/digit capability info")
|
|
parser.add_argument("--test-converter", action="store_true", help="round-trip the watts<->digits polynomials")
|
|
parser.add_argument("--test-heater", action="store_true", help="drive the heater through its power range")
|
|
parser.add_argument("--update-firmware", metavar="FILE", help="flash the given firmware file")
|
|
args = parser.parse_args()
|
|
|
|
hendi = HendiCtrl(args.serial_port, args.baudrate)
|
|
|
|
if args.version:
|
|
print_version(hendi)
|
|
if args.capabilities:
|
|
print_capabilities(hendi)
|
|
if args.test_converter:
|
|
test_converter(hendi)
|
|
if args.test_heater:
|
|
test_heater(hendi)
|
|
if args.update_firmware:
|
|
update_firmware(hendi, args.update_firmware)
|
|
|
|
print("End of program.")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|