完善 working5 gmoccapy HAL 输入对标
This commit is contained in:
@@ -3,6 +3,7 @@ import assert from "node:assert/strict";
|
||||
import {
|
||||
createGmoccapyHalSummary,
|
||||
gmoccapyHalModel,
|
||||
resolveGmoccapyHardwareButton,
|
||||
} from "../../app/src/runtime/gmoccapy-hal-model.js";
|
||||
|
||||
const model = gmoccapyHalModel;
|
||||
@@ -23,6 +24,7 @@ for (const groupName of [
|
||||
"hard-buttons",
|
||||
"jog",
|
||||
"override",
|
||||
"operator-inputs",
|
||||
"tool",
|
||||
"program",
|
||||
"message",
|
||||
@@ -34,7 +36,14 @@ for (const groupName of [
|
||||
assert.equal(groups.get("hard-buttons").pins.includes("gmoccapy.h-button.button-0"), true);
|
||||
assert.equal(groups.get("hard-buttons").pins.includes("gmoccapy.v-button.button-6"), true);
|
||||
assert.equal(groups.get("jog").pins.includes("gmoccapy.jog.axis.jog-b-minus"), true);
|
||||
assert.equal(groups.get("jog").pins.includes("gmoccapy.jog.jog-inc-5"), true);
|
||||
assert.equal(groups.get("jog").pins.includes("gmoccapy.jog.turtle-jog"), true);
|
||||
assert.equal(groups.get("override").pins.includes("gmoccapy.rapid.rapid-override.direct-value"), true);
|
||||
assert.equal(groups.get("override").pins.includes("gmoccapy.feed.feed-override.count-enable"), true);
|
||||
assert.equal(groups.get("override").pins.includes("gmoccapy.spindle.reset-spindle-override"), true);
|
||||
assert.equal(groups.get("operator-inputs").pins.includes("gmoccapy.ignore-limits"), true);
|
||||
assert.equal(groups.get("operator-inputs").pins.includes("gmoccapy.optional-stop"), true);
|
||||
assert.equal(groups.get("operator-inputs").pins.includes("gmoccapy.blockdelete"), true);
|
||||
assert.equal(groups.get("tool").pins.includes("gmoccapy.toolchange-changed"), true);
|
||||
assert.equal(groups.get("program").pins.includes("gmoccapy.program.current-line"), true);
|
||||
assert.equal(groups.get("message").pins.includes("gmoccapy.error"), true);
|
||||
@@ -56,17 +65,113 @@ assert.equal(model.postguiNets.some((net) => net.target === "gmoccapy.spindle_fe
|
||||
assert.equal(model.postguiNets.some((net) => net.target === "gmoccapy.tooloffset-x"), true);
|
||||
assert.equal(model.postguiNets.some((net) => net.simulationLoop && net.signal === "tool-change-loop"), true);
|
||||
|
||||
assert.equal(model.hardwareButtons.source.methods.includes("_button_pin_changed"), true);
|
||||
assert.equal(model.hardwareButtons.behavior.edge, "rising-edge-only");
|
||||
assert.equal(model.hardwareButtons.behavior.insensitiveTarget, "ignored");
|
||||
assert.deepEqual(model.hardwareButtons.verticalMain.map((button) => button.nativeWidget), [
|
||||
"tbtn_estop",
|
||||
"tbtn_on",
|
||||
"rbt_manual",
|
||||
"rbt_mdi",
|
||||
"rbt_auto",
|
||||
"tbtn_user_tabs",
|
||||
"tbtn_setup",
|
||||
]);
|
||||
assert.deepEqual(model.hardwareButtons.verticalMain.map((button) => button.pin), [
|
||||
"gmoccapy.v-button.button-0",
|
||||
"gmoccapy.v-button.button-1",
|
||||
"gmoccapy.v-button.button-2",
|
||||
"gmoccapy.v-button.button-3",
|
||||
"gmoccapy.v-button.button-4",
|
||||
"gmoccapy.v-button.button-5",
|
||||
"gmoccapy.v-button.button-6",
|
||||
]);
|
||||
assert.equal(model.hardwareButtons.bottomMain.find((button) => button.index === 0).nativeWidget, "btn_homing");
|
||||
assert.equal(model.hardwareButtons.bottomMain.find((button) => button.index === 0).webDispatch.type, "HOME");
|
||||
assert.equal(resolveGmoccapyHardwareButton("gmoccapy.v-button.button-4", model).webDispatch.mode, "auto");
|
||||
assert.equal(resolveGmoccapyHardwareButton({ location: "bottom", index: 0 }, model).webDispatch.type, "HOME");
|
||||
assert.equal(resolveGmoccapyHardwareButton({ location: "right", index: 6 }, model).webDispatch, undefined);
|
||||
assert.equal(resolveGmoccapyHardwareButton("gmoccapy.h-button.button-9", model), null);
|
||||
|
||||
assert.equal(model.halPinActions.source.methods.includes("_optional_blocks"), true);
|
||||
assert.equal(model.halPinActions.source.methods.includes("_blockdelete"), true);
|
||||
assert.equal(model.halPinActions.source.methods.includes("_on_pin_jog_changed"), true);
|
||||
assert.equal(model.halPinActions.source.methods.includes("_on_pin_incr_changed"), true);
|
||||
assert.equal(model.halPinActions.source.methods.includes("_del_message_changed"), true);
|
||||
assert.equal(model.halPinActions.jogPins.axes.length, 5);
|
||||
assert.equal(model.halPinActions.jogPins.axes.find((entry) => entry.axis === "b").minus, "gmoccapy.jog.axis.jog-b-minus");
|
||||
assert.equal(model.halPinActions.jogPins.increments.length, 6);
|
||||
assert.equal(model.halPinActions.jogPins.increments[0].distance, 0);
|
||||
assert.equal(model.halPinActions.jogPins.increments[5].pin, "gmoccapy.jog.jog-inc-5");
|
||||
assert.equal(model.halPinActions.jogPins.increments[5].distance, 31.3563);
|
||||
assert.equal(model.halPinActions.jogPins.turtlePin, "gmoccapy.jog.turtle-jog");
|
||||
assert.equal(model.halPinActions.operatorPins.find((pin) => pin.pin === "gmoccapy.optional-stop").webState, "gmoccapyGui.optionalBlocks");
|
||||
assert.equal(model.halPinActions.operatorPins.find((pin) => pin.pin === "gmoccapy.blockdelete").webState, "gmoccapyGui.optionalStop");
|
||||
assert.equal(model.halPinActions.overridePins.find((pin) => pin.target === "feed").countEnable, "gmoccapy.feed.feed-override.count-enable");
|
||||
assert.equal(model.halPinActions.overridePins.find((pin) => pin.target === "spindle").reset, "gmoccapy.spindle.reset-spindle-override");
|
||||
assert.equal(model.halPinActions.overridePins.find((pin) => pin.target === "jogVelocity").scalePref, "scale_jog_vel=140.4");
|
||||
assert.equal(model.halPinActions.behavior.optionalStopPinCrossesToBlockDelete, true);
|
||||
assert.equal(model.halPinActions.behavior.blockdeletePinCrossesToOptionalStop, true);
|
||||
assert.equal(model.halPinActions.behavior.jogAxisPinsPressRelease, true);
|
||||
assert.equal(model.halPinActions.behavior.jogPinsUseTaskPolicyGate, true);
|
||||
assert.equal(model.halPinActions.behavior.jogIncrementPinsRisingEdgeOnly, true);
|
||||
assert.equal(model.halPinActions.behavior.jogIncrementZeroIsContinuous, true);
|
||||
assert.equal(model.halPinActions.behavior.turtleJogLevelDriven, true);
|
||||
assert.equal(model.halPinActions.behavior.countInputRequiresEnable, true);
|
||||
assert.equal(model.halPinActions.behavior.directValueRequiresAnalogEnable, true);
|
||||
assert.equal(model.halPinActions.behavior.resetPinsRisingEdgeOnly, true);
|
||||
assert.equal(model.halPinActions.messagePins.find((pin) => pin.pin === "gmoccapy.delete-message").nativeCallback, "_del_message_changed");
|
||||
assert.equal(model.halPinActions.messagePins.find((pin) => pin.pin === "gmoccapy.warning-confirm").nativeCallback, "dialogs.warning_dialog periodic confirm_pin poll");
|
||||
assert.equal(model.halPinActions.behavior.deleteMessageRisingEdgeOnly, true);
|
||||
assert.equal(model.halPinActions.behavior.warningConfirmLevelPolled, true);
|
||||
|
||||
assert.equal(model.toolChange.strategy, "iocontrol-loopback");
|
||||
assert.equal(model.toolChange.manualGmoccapyPinsConnected, false);
|
||||
assert.deepEqual(model.toolChange.remapCodes, ["M6", "M61"]);
|
||||
assert.equal(model.toolChange.postguiUnlinks.map((entry) => entry.pin).join(","), "iocontrol.0.tool-change,iocontrol.0.tool-changed,iocontrol.0.tool-prep-number");
|
||||
assert.equal(model.toolChange.commentedManualGuiNets.some((net) => net.target === "gmoccapy.toolchange-change"), true);
|
||||
assert.equal(model.toolChange.commentedManualGuiNets.some((net) => net.source === "gmoccapy.toolchange-changed"), true);
|
||||
assert.equal(model.toolChange.activeLoop.signal, "tool-change-loop");
|
||||
assert.equal(model.toolChange.activeLoop.stage, "POSTGUI_HALFILE");
|
||||
assert.equal(model.toolChange.semanticBoundary, "gmoccapy_xyzab_iocontrol_tool_change_loop_no_manual_gui_dialog");
|
||||
|
||||
const summary = createGmoccapyHalSummary(model);
|
||||
assert.equal(summary.apiName, "web-rtcp-5axis-gmoccapy-hal-model-summary");
|
||||
assert.equal(summary.profileId, "gmoccapy-xyzab");
|
||||
assert.equal(summary.halFileCount, 4);
|
||||
assert.equal(summary.nativePinGroupCount, 7);
|
||||
assert.equal(summary.nativePinGroupCount, 8);
|
||||
assert.equal(summary.nativePinCount >= 50, true);
|
||||
assert.equal(summary.coreNetCount, 10);
|
||||
assert.equal(summary.spindleNetCount, 4);
|
||||
assert.equal(summary.postguiNetCount, 5);
|
||||
assert.equal(summary.postguiRequiresHalcompReady, true);
|
||||
assert.equal(summary.hasToolChangeSimulationLoop, true);
|
||||
assert.equal(summary.toolChangeStrategy, "iocontrol-loopback");
|
||||
assert.equal(summary.manualToolChangeGuiConnected, false);
|
||||
assert.equal(summary.postguiToolUnlinkCount, 3);
|
||||
assert.equal(summary.commentedManualToolChangeNetCount, 3);
|
||||
assert.equal(summary.hardwareButtonVerticalCount, 7);
|
||||
assert.equal(summary.hardwareButtonBottomMainCount, 4);
|
||||
assert.equal(summary.mappedHardwareButtonCount, 7);
|
||||
assert.equal(summary.hardwareButtonEdge, "rising-edge-only");
|
||||
assert.equal(summary.hardwareButtonInsensitiveTarget, "ignored");
|
||||
assert.equal(summary.operatorInputPinCount, 3);
|
||||
assert.equal(summary.overridePinTargetCount, 4);
|
||||
assert.equal(summary.jogAxisPinCount, 10);
|
||||
assert.equal(summary.jogIncrementPinCount, 6);
|
||||
assert.equal(summary.messageInputPinCount, 3);
|
||||
assert.equal(summary.optionalStopPinCrossesToBlockDelete, true);
|
||||
assert.equal(summary.blockdeletePinCrossesToOptionalStop, true);
|
||||
assert.equal(summary.jogAxisPinsPressRelease, true);
|
||||
assert.equal(summary.jogPinsUseTaskPolicyGate, true);
|
||||
assert.equal(summary.jogIncrementPinsRisingEdgeOnly, true);
|
||||
assert.equal(summary.jogIncrementZeroIsContinuous, true);
|
||||
assert.equal(summary.turtleJogLevelDriven, true);
|
||||
assert.equal(summary.countInputRequiresEnable, true);
|
||||
assert.equal(summary.directValueRequiresAnalogEnable, true);
|
||||
assert.equal(summary.resetPinsRisingEdgeOnly, true);
|
||||
assert.equal(summary.deleteMessageRisingEdgeOnly, true);
|
||||
assert.equal(summary.warningConfirmLevelPolled, true);
|
||||
assert.equal(summary.semanticBoundary, model.semanticBoundary);
|
||||
|
||||
console.log("gmoccapy_hal_model_smoke=ok");
|
||||
|
||||
Reference in New Issue
Block a user