v 2.1
This commit is contained in:
@@ -97,6 +97,62 @@ def fmt(value, unit="", width=0, precision=3):
|
||||
return f"{text}{unit}"
|
||||
|
||||
|
||||
STATE_TEXT = {
|
||||
"open_wait": "等待触发",
|
||||
"closing": "闭合中",
|
||||
"gripping": "夹持加力",
|
||||
"hold_check": "夹持检测",
|
||||
"open_recover": "张开恢复",
|
||||
"manual_close": "手动闭合",
|
||||
"manual_hold": "手动保持",
|
||||
"error": "错误",
|
||||
}
|
||||
|
||||
ACTION_TEXT = {
|
||||
"wait": "等待",
|
||||
"waiting-for-sensor-samples": "等待传感器数据",
|
||||
"open-wait-stabilizing": "等待稳定基准",
|
||||
"open-wait-armed": "已就绪",
|
||||
"side-trigger-close": "侧边触发闭合",
|
||||
"closing-to-grip": "闭合寻找物体",
|
||||
"object-detected-low-force": "检测到物体",
|
||||
"close-timeout-open": "闭合超时张开",
|
||||
"grip-ramp-up": "夹持加力",
|
||||
"grip-hold": "夹持保持",
|
||||
"hold-reference-armed": "记录夹持基准",
|
||||
"adaptive-grip-ramp": "自适应加力",
|
||||
"adaptive-grip-wait": "等待自适应加力",
|
||||
"release-arm-delay": "释放检测延时",
|
||||
"release-reference-armed": "释放检测就绪",
|
||||
"hold-check": "保持检测",
|
||||
"force-change-release-open": "力变化张开",
|
||||
"open-recover-position": "张开位置恢复",
|
||||
"open-recover-position-stabilizing": "张开位置稳定中",
|
||||
"open-ready-position": "张开到位",
|
||||
"open-recover-quiet": "力稳定恢复",
|
||||
"open-recover-stabilizing": "恢复稳定中",
|
||||
"open-recover-wait-force-clear": "等待力恢复",
|
||||
"open-ready": "恢复完成",
|
||||
"manual-open": "手动张开",
|
||||
"manual-close": "手动闭合",
|
||||
"manual-hold": "手动保持",
|
||||
"manual-release": "手动释放",
|
||||
}
|
||||
|
||||
|
||||
def label_with_cn(value, mapping):
|
||||
value = str(value or "--")
|
||||
cn = mapping.get(value)
|
||||
if cn is None:
|
||||
for prefix, text in mapping.items():
|
||||
if value.startswith(f"{prefix} "):
|
||||
cn = text
|
||||
break
|
||||
if cn is None:
|
||||
return value
|
||||
return f"{value}({cn})"
|
||||
|
||||
|
||||
STYLE = """
|
||||
QMainWindow {
|
||||
background-color: #000000;
|
||||
@@ -140,6 +196,22 @@ QLabel#StatusChip {
|
||||
font-weight: 600;
|
||||
padding: 8px 12px;
|
||||
}
|
||||
QFrame#StatusPanel {
|
||||
background-color: #101010;
|
||||
border: 1px solid #303030;
|
||||
border-radius: 4px;
|
||||
}
|
||||
QLabel#StatusMain {
|
||||
color: #00e5ff;
|
||||
font-family: "Cascadia Code", "Consolas";
|
||||
font-size: 17px;
|
||||
font-weight: 600;
|
||||
}
|
||||
QLabel#StatusSub {
|
||||
color: #9a9a9a;
|
||||
font-family: "Cascadia Code", "Consolas";
|
||||
font-size: 12px;
|
||||
}
|
||||
QLabel#ActionChip {
|
||||
background-color: #0b0b0b;
|
||||
border: 1px solid #262626;
|
||||
@@ -332,8 +404,17 @@ class GripperDemo02Viewer(QMainWindow):
|
||||
top.setSpacing(8)
|
||||
title = QLabel("Orisys 夹爪")
|
||||
title.setObjectName("Title")
|
||||
self.status_panel = QFrame()
|
||||
self.status_panel.setObjectName("StatusPanel")
|
||||
status_layout = QVBoxLayout(self.status_panel)
|
||||
status_layout.setContentsMargins(10, 6, 10, 6)
|
||||
status_layout.setSpacing(1)
|
||||
self.status_chip = QLabel("state=--")
|
||||
self.status_chip.setObjectName("StatusChip")
|
||||
self.status_chip.setObjectName("StatusMain")
|
||||
self.action_label = QLabel("action=--")
|
||||
self.action_label.setObjectName("StatusSub")
|
||||
status_layout.addWidget(self.status_chip)
|
||||
status_layout.addWidget(self.action_label)
|
||||
self.start_button = AnimatedButton("启动")
|
||||
self.start_button.setObjectName("StartButton")
|
||||
self.start_button.clicked.connect(self.start_control)
|
||||
@@ -355,7 +436,7 @@ class GripperDemo02Viewer(QMainWindow):
|
||||
self.manual_hold_button.clicked.connect(self.toggle_manual_hold)
|
||||
self._set_button_state("idle")
|
||||
top.addWidget(title)
|
||||
top.addWidget(self.status_chip)
|
||||
top.addWidget(self.status_panel)
|
||||
top.addStretch(1)
|
||||
top.addWidget(self.start_button)
|
||||
top.addWidget(self.stop_button)
|
||||
@@ -557,9 +638,11 @@ class GripperDemo02Viewer(QMainWindow):
|
||||
self._set_button_state("running")
|
||||
|
||||
state = status.get("state", "--")
|
||||
action = status.get("action", "--")
|
||||
unit = status.get("normal_unit", "N")
|
||||
shear_unit = status.get("shear_unit", "N")
|
||||
self.status_chip.setText(f"state={state}")
|
||||
self.status_chip.setText(f"state={label_with_cn(state, STATE_TEXT)}")
|
||||
self.action_label.setText(f"action={label_with_cn(action, ACTION_TEXT)}")
|
||||
self.manual_hold_button.setText(
|
||||
"释放" if bool(status.get("manual_hold_active")) else "保持"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user