1
0

params.wxml 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633
  1. <navigation-bar background="#FFF"></navigation-bar>
  2. <view wx:if="{{toastText}}" class="page-toast page-toast--{{toastType}}">
  3. {{toastText}}
  4. </view>
  5. <scroll-view class="scrollarea" scroll-y type="list">
  6. <view class="page-shell">
  7. <view class="panel {{collapsedCards.motor ? 'panel--collapsed' : ''}}">
  8. <view class="panel-header panel-header--with-actions">
  9. <view
  10. class="panel-heading-toggle {{collapsedCards.motor ? 'is-collapsed' : ''}}"
  11. data-card="motor"
  12. bindtap="toggleCard"
  13. >
  14. <view class="panel-icon icon-motor"></view>
  15. <view class="panel-title">电机参数</view>
  16. </view>
  17. <view class="panel-actions">
  18. <view
  19. class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}"
  20. bindtap="readMotorParameters"
  21. >
  22. 读取
  23. </view>
  24. <view
  25. class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}"
  26. bindtap="writeMotorParameters"
  27. >
  28. 写入
  29. </view>
  30. </view>
  31. <view
  32. class="collapse-toggle {{collapsedCards.motor ? 'is-collapsed' : ''}}"
  33. data-card="motor"
  34. bindtap="toggleCard"
  35. >
  36. <view class="collapse-indicator"></view>
  37. </view>
  38. </view>
  39. <block wx:if="{{!collapsedCards.motor}}">
  40. <view wx:for="{{motorParameterInputRegisters}}" wx:key="name" class="param-row input-row">
  41. <view class="param-main">
  42. <view class="param-name">{{item.name}}</view>
  43. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue || '--'}}</view>
  44. </view>
  45. <view class="input-wrap">
  46. <input
  47. class="value-input value-input--with-unit"
  48. type="{{item.unit ? 'text' : 'digit'}}"
  49. placeholder="--"
  50. value="{{item.inputValue}}"
  51. data-index="{{index}}"
  52. bindinput="onMotorParameterInput"
  53. bindblur="onMotorParameterBlur"
  54. />
  55. </view>
  56. </view>
  57. </block>
  58. </view>
  59. <view class="panel {{collapsedCards.driver ? 'panel--collapsed' : ''}}">
  60. <view class="panel-header panel-header--with-actions">
  61. <view
  62. class="panel-heading-toggle {{collapsedCards.driver ? 'is-collapsed' : ''}}"
  63. data-card="driver"
  64. bindtap="toggleCard"
  65. >
  66. <view class="panel-icon icon-chip"></view>
  67. <view class="panel-title">驱动器硬件参数</view>
  68. </view>
  69. <view class="panel-actions">
  70. <view
  71. class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}"
  72. bindtap="readDriverParameters"
  73. >
  74. 读取
  75. </view>
  76. </view>
  77. <view
  78. class="collapse-toggle {{collapsedCards.driver ? 'is-collapsed' : ''}}"
  79. data-card="driver"
  80. bindtap="toggleCard"
  81. >
  82. <view class="collapse-indicator"></view>
  83. </view>
  84. </view>
  85. <block wx:if="{{!collapsedCards.driver}}">
  86. <view wx:for="{{readonlyParamRegisters}}" wx:key="name" class="param-row">
  87. <view class="param-main">
  88. <view class="param-name">{{item.name}}</view>
  89. <view wx:if="{{!item.hideMeta}}" class="param-meta">{{item.addressDisplay}}</view>
  90. </view>
  91. <view class="param-value">{{item.displayValue || '--'}}{{item.unit ? ' ' + item.unit : ''}}</view>
  92. </view>
  93. </block>
  94. </view>
  95. <view wx:if="{{estimatorCalculatedDisplayRegisters.length || atoBandwidthDisplayRegisters.length}}" class="panel {{collapsedCards.estimator ? 'panel--collapsed' : ''}}">
  96. <view class="panel-header panel-header--with-actions">
  97. <view
  98. class="panel-heading-toggle {{collapsedCards.estimator ? 'is-collapsed' : ''}}"
  99. data-card="estimator"
  100. bindtap="toggleCard"
  101. >
  102. <view class="panel-icon icon-bars"></view>
  103. <view class="panel-title">估算器参数</view>
  104. </view>
  105. <view class="panel-actions panel-actions--three">
  106. <view class="panel-action-button" bindtap="onEstimatorUpdate">更新</view>
  107. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="estimator" bindtap="onGroupRead">读取</view>
  108. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="estimator" bindtap="onGroupWrite">写入</view>
  109. </view>
  110. <view
  111. class="collapse-toggle {{collapsedCards.estimator ? 'is-collapsed' : ''}}"
  112. data-card="estimator"
  113. bindtap="toggleCard"
  114. >
  115. <view class="collapse-indicator"></view>
  116. </view>
  117. </view>
  118. <block wx:if="{{!collapsedCards.estimator}}">
  119. <view wx:for="{{estimatorCalculatedDisplayRegisters}}" wx:key="name" class="param-row">
  120. <view class="param-main">
  121. <view class="param-name">{{item.name}}</view>
  122. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue || '--'}}</view>
  123. </view>
  124. <view class="param-value">{{item.writeValue || '--'}}{{item.unit ? ' ' + item.unit : ''}}</view>
  125. </view>
  126. <view
  127. wx:for="{{atoBandwidthDisplayRegisters}}"
  128. wx:for-item="atoItem"
  129. wx:key="name"
  130. class="param-row input-row"
  131. >
  132. <view class="param-main">
  133. <view class="param-name">{{atoItem.name}}</view>
  134. <view class="param-meta {{atoItem.isDirty ? 'param-meta--dirty' : ''}}">KP 0x{{atoItem.kpAddress}} {{atoItem.kpWriteValue || '--'}} KI 0x{{atoItem.kiAddress}} {{atoItem.kiWriteValue || '--'}}</view>
  135. </view>
  136. <view class="input-wrap">
  137. <input
  138. class="value-input {{atoItem.unit ? 'value-input--with-unit' : ''}}"
  139. type="{{atoItem.unit ? 'text' : 'digit'}}"
  140. placeholder="--"
  141. value="{{atoItem.inputValue}}"
  142. data-index="{{atoItem.sourceIndex}}"
  143. data-input-group="ato"
  144. bindinput="onAtoBandwidthInput"
  145. bindblur="onInputBlur"
  146. />
  147. </view>
  148. </view>
  149. </block>
  150. </view>
  151. <view wx:if="{{dqGainDisplayRegisters.length}}" class="panel {{collapsedCards.dq ? 'panel--collapsed' : ''}}">
  152. <view class="panel-header panel-header--with-actions">
  153. <view
  154. class="panel-heading-toggle {{collapsedCards.dq ? 'is-collapsed' : ''}}"
  155. data-card="dq"
  156. bindtap="toggleCard"
  157. >
  158. <view class="panel-icon icon-tune"></view>
  159. <view class="panel-title">DQ轴电流环参数</view>
  160. </view>
  161. <view class="panel-actions">
  162. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="dq" bindtap="onGroupRead">读取</view>
  163. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="dq" bindtap="onGroupWrite">写入</view>
  164. </view>
  165. <view
  166. class="collapse-toggle {{collapsedCards.dq ? 'is-collapsed' : ''}}"
  167. data-card="dq"
  168. bindtap="toggleCard"
  169. >
  170. <view class="collapse-indicator"></view>
  171. </view>
  172. </view>
  173. <block wx:if="{{!collapsedCards.dq}}">
  174. <view
  175. wx:for="{{dqGainDisplayRegisters}}"
  176. wx:for-item="dqItem"
  177. wx:key="name"
  178. class="param-row input-row"
  179. >
  180. <view class="param-main">
  181. <view class="param-name">{{dqItem.name}}</view>
  182. <view class="param-meta {{dqItem.isDirty ? 'param-meta--dirty' : ''}}">{{dqItem.addressDisplay}} {{dqItem.writeValue || '--'}}</view>
  183. </view>
  184. <view class="input-wrap">
  185. <input
  186. class="value-input {{dqItem.unit ? 'value-input--with-unit' : ''}}"
  187. type="{{dqItem.unit ? 'text' : 'digit'}}"
  188. placeholder="--"
  189. value="{{dqItem.inputValue}}"
  190. data-index="{{dqItem.sourceIndex}}"
  191. data-input-group="dq"
  192. bindinput="onDqGainInput"
  193. bindblur="onInputBlur"
  194. />
  195. </view>
  196. </view>
  197. </block>
  198. </view>
  199. <view wx:if="{{tailwindControlRegisters.length || tailwindCalculatedDisplayRegisters.length || tailwindAtoBandwidthDisplayRegisters.length}}" class="panel {{collapsedCards.tailwind ? 'panel--collapsed' : ''}}">
  200. <view class="panel-header panel-header--with-actions">
  201. <view
  202. class="panel-heading-toggle {{collapsedCards.tailwind ? 'is-collapsed' : ''}}"
  203. data-card="tailwind"
  204. bindtap="toggleCard"
  205. >
  206. <view class="panel-icon icon-wind"></view>
  207. <view class="panel-title">顺逆风配置</view>
  208. </view>
  209. <view class="panel-actions">
  210. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="tailwind" bindtap="onGroupRead">读取</view>
  211. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="tailwind" bindtap="onGroupWrite">写入</view>
  212. </view>
  213. <view
  214. class="collapse-toggle {{collapsedCards.tailwind ? 'is-collapsed' : ''}}"
  215. data-card="tailwind"
  216. bindtap="toggleCard"
  217. >
  218. <view class="collapse-indicator"></view>
  219. </view>
  220. </view>
  221. <block wx:if="{{!collapsedCards.tailwind}}">
  222. <view wx:for="{{tailwindControlRegisters}}" wx:key="address" class="param-row">
  223. <view class="param-main">
  224. <view class="param-name">{{item.name}}</view>
  225. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue}}</view>
  226. </view>
  227. <switch
  228. checked="{{item.value}}"
  229. color="#0f766e"
  230. disabled="{{!connectedDevice}}"
  231. data-index="{{item.sourceIndex}}"
  232. bindchange="onTailwindSwitchChange"
  233. />
  234. </view>
  235. <view wx:for="{{tailwindCalculatedDisplayRegisters}}" wx:key="name" class="param-row">
  236. <view class="param-main">
  237. <view class="param-name">{{item.name}}</view>
  238. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue || '--'}}</view>
  239. </view>
  240. <view class="param-value">{{item.writeValue || '--'}}{{item.unit ? ' ' + item.unit : ''}}</view>
  241. </view>
  242. <view
  243. wx:for="{{tailwindAtoBandwidthDisplayRegisters}}"
  244. wx:for-item="atoItem"
  245. wx:key="name"
  246. class="param-row input-row"
  247. >
  248. <view class="param-main">
  249. <view class="param-name">{{atoItem.name}}</view>
  250. <view class="param-meta {{atoItem.isDirty ? 'param-meta--dirty' : ''}}">KP 0x{{atoItem.kpAddress}} {{atoItem.kpWriteValue || '--'}} KI 0x{{atoItem.kiAddress}} {{atoItem.kiWriteValue || '--'}}</view>
  251. </view>
  252. <view class="input-wrap">
  253. <input
  254. class="value-input {{atoItem.unit ? 'value-input--with-unit' : ''}}"
  255. type="{{atoItem.unit ? 'text' : 'digit'}}"
  256. placeholder="--"
  257. value="{{atoItem.inputValue}}"
  258. data-index="{{atoItem.sourceIndex}}"
  259. data-input-group="ato"
  260. bindinput="onAtoBandwidthInput"
  261. bindblur="onInputBlur"
  262. />
  263. </view>
  264. </view>
  265. </block>
  266. </view>
  267. <view wx:if="{{prepositionSwitchRegisters.length || prepositionParameterDisplayRegisters.length}}" class="panel {{collapsedCards.preposition ? 'panel--collapsed' : ''}}">
  268. <view class="panel-header panel-header--with-actions">
  269. <view
  270. class="panel-heading-toggle {{collapsedCards.preposition ? 'is-collapsed' : ''}}"
  271. data-card="preposition"
  272. bindtap="toggleCard"
  273. >
  274. <view class="panel-icon icon-target"></view>
  275. <view class="panel-title">预定位配置</view>
  276. </view>
  277. <view class="panel-actions">
  278. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="preposition" bindtap="onGroupRead">读取</view>
  279. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="preposition" bindtap="onGroupWrite">写入</view>
  280. </view>
  281. <view
  282. class="collapse-toggle {{collapsedCards.preposition ? 'is-collapsed' : ''}}"
  283. data-card="preposition"
  284. bindtap="toggleCard"
  285. >
  286. <view class="collapse-indicator"></view>
  287. </view>
  288. </view>
  289. <block wx:if="{{!collapsedCards.preposition}}">
  290. <view wx:for="{{prepositionSwitchRegisters}}" wx:key="address" class="param-row">
  291. <view class="param-main">
  292. <view class="param-name">{{item.name}}</view>
  293. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue}}</view>
  294. </view>
  295. <switch
  296. checked="{{item.value}}"
  297. color="#0f766e"
  298. disabled="{{!connectedDevice}}"
  299. data-index="{{item.sourceIndex}}"
  300. bindchange="onTailwindSwitchChange"
  301. />
  302. </view>
  303. <view wx:for="{{prepositionParameterDisplayRegisters}}" wx:key="name" class="param-row input-row">
  304. <view class="param-main">
  305. <view class="param-name">{{item.name}}</view>
  306. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue || '--'}}</view>
  307. </view>
  308. <view class="input-wrap">
  309. <input
  310. class="value-input {{item.unit ? 'value-input--with-unit' : ''}}"
  311. type="{{item.unit ? 'text' : 'digit'}}"
  312. placeholder="--"
  313. value="{{item.inputValue}}"
  314. data-index="{{item.sourceIndex}}"
  315. data-input-group="preposition"
  316. bindinput="onPrepositionParameterInput"
  317. bindblur="onInputBlur"
  318. />
  319. </view>
  320. </view>
  321. </block>
  322. </view>
  323. <view wx:if="{{speedLoopInputDisplayRegisters.length || speedLoopCalculatedDisplayRegisters.length || speedLoopExtraDisplayRegisters.length}}" class="panel {{collapsedCards.speedLoop ? 'panel--collapsed' : ''}}">
  324. <view class="panel-header panel-header--with-actions">
  325. <view
  326. class="panel-heading-toggle {{collapsedCards.speedLoop ? 'is-collapsed' : ''}}"
  327. data-card="speedLoop"
  328. bindtap="toggleCard"
  329. >
  330. <view class="panel-icon icon-speed"></view>
  331. <view class="panel-title">速度环路</view>
  332. </view>
  333. <view class="panel-actions">
  334. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="speedLoop" bindtap="onGroupRead">读取</view>
  335. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="speedLoop" bindtap="onGroupWrite">写入</view>
  336. </view>
  337. <view
  338. class="collapse-toggle {{collapsedCards.speedLoop ? 'is-collapsed' : ''}}"
  339. data-card="speedLoop"
  340. bindtap="toggleCard"
  341. >
  342. <view class="collapse-indicator"></view>
  343. </view>
  344. </view>
  345. <block wx:if="{{!collapsedCards.speedLoop}}">
  346. <view wx:for="{{speedLoopInputDisplayRegisters}}" wx:key="name">
  347. <view class="param-row input-row">
  348. <view class="param-main">
  349. <view class="param-name">{{item.name}}</view>
  350. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue || '--'}}</view>
  351. </view>
  352. <view class="input-wrap">
  353. <input
  354. class="value-input {{item.unit ? 'value-input--with-unit' : ''}}"
  355. type="{{item.unit ? 'text' : 'digit'}}"
  356. placeholder="--"
  357. value="{{item.inputValue}}"
  358. data-index="{{item.sourceIndex}}"
  359. data-input-group="parameter"
  360. bindinput="onInputChange"
  361. bindblur="onInputBlur"
  362. />
  363. </view>
  364. </view>
  365. </view>
  366. <view wx:for="{{speedLoopCalculatedDisplayRegisters}}" wx:key="name" class="param-row">
  367. <view class="param-main">
  368. <view class="param-name">{{item.name}}</view>
  369. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue || '--'}}</view>
  370. </view>
  371. <view class="param-value">{{item.writeValue || '--'}}{{item.unit ? ' ' + item.unit : ''}}</view>
  372. </view>
  373. <view wx:for="{{speedLoopExtraDisplayRegisters}}" wx:key="name">
  374. <view class="param-row input-row">
  375. <view class="param-main">
  376. <view class="param-name">{{item.name}}</view>
  377. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue || '--'}}</view>
  378. </view>
  379. <view class="input-wrap">
  380. <input
  381. class="value-input {{item.unit ? 'value-input--with-unit' : ''}}"
  382. type="{{item.unit ? 'text' : 'digit'}}"
  383. placeholder="--"
  384. value="{{item.inputValue}}"
  385. data-index="{{item.sourceIndex}}"
  386. data-input-group="speedLoopExtra"
  387. bindinput="onSpeedLoopExtraInput"
  388. bindblur="onInputBlur"
  389. />
  390. </view>
  391. </view>
  392. </view>
  393. </block>
  394. </view>
  395. <view wx:if="{{vspCurveRegisters.length}}" class="panel {{collapsedCards.vsp ? 'panel--collapsed' : ''}}">
  396. <view class="panel-header panel-header--with-actions">
  397. <view
  398. class="panel-heading-toggle {{collapsedCards.vsp ? 'is-collapsed' : ''}}"
  399. data-card="vsp"
  400. bindtap="toggleCard"
  401. >
  402. <view class="panel-icon icon-curve"></view>
  403. <view class="panel-title">VSP曲线</view>
  404. </view>
  405. <view class="panel-actions">
  406. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="vsp" bindtap="onGroupRead">读取</view>
  407. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="vsp" bindtap="onGroupWrite">写入</view>
  408. </view>
  409. <view
  410. class="collapse-toggle {{collapsedCards.vsp ? 'is-collapsed' : ''}}"
  411. data-card="vsp"
  412. bindtap="toggleCard"
  413. >
  414. <view class="collapse-indicator"></view>
  415. </view>
  416. </view>
  417. <block wx:if="{{!collapsedCards.vsp}}">
  418. <view wx:for="{{vspCurveRegisters}}" wx:key="name">
  419. <view class="param-row input-row">
  420. <view class="param-main">
  421. <view class="param-name">{{item.name}}</view>
  422. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue || '--'}}{{item.actualText ? ' ' + item.actualText : ''}}</view>
  423. </view>
  424. <view class="input-wrap">
  425. <input
  426. class="value-input {{item.unit ? 'value-input--with-unit' : ''}}"
  427. type="{{item.unit ? 'text' : 'digit'}}"
  428. placeholder="--"
  429. value="{{item.inputValue}}"
  430. data-index="{{item.sourceIndex}}"
  431. data-input-group="parameter"
  432. bindinput="onInputChange"
  433. bindblur="onInputBlur"
  434. />
  435. </view>
  436. </view>
  437. </view>
  438. <view class="param-row">
  439. <view class="param-main">
  440. <view class="param-name">{{speedSlopeRegister.name}}</view>
  441. <view class="param-meta {{speedSlopeRegister.isDirty ? 'param-meta--dirty' : ''}}">{{speedSlopeRegister.addressDisplay}} {{speedSlopeRegister.writeValue || '--'}}</view>
  442. </view>
  443. <view class="param-value">{{speedSlopeRegister.writeValue || '--'}}{{speedSlopeRegister.unit ? ' ' + speedSlopeRegister.unit : ''}}</view>
  444. </view>
  445. </block>
  446. </view>
  447. <view wx:if="{{oilParameterInputRegisters.length}}" class="panel {{collapsedCards.oil ? 'panel--collapsed' : ''}}">
  448. <view class="panel-header panel-header--with-actions">
  449. <view
  450. class="panel-heading-toggle {{collapsedCards.oil ? 'is-collapsed' : ''}}"
  451. data-card="oil"
  452. bindtap="toggleCard"
  453. >
  454. <view class="panel-icon icon-oil"></view>
  455. <view class="panel-title">上油参数</view>
  456. </view>
  457. <view class="panel-actions">
  458. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="oil" bindtap="onGroupRead">读取</view>
  459. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="oil" bindtap="onGroupWrite">写入</view>
  460. </view>
  461. <view
  462. class="collapse-toggle {{collapsedCards.oil ? 'is-collapsed' : ''}}"
  463. data-card="oil"
  464. bindtap="toggleCard"
  465. >
  466. <view class="collapse-indicator"></view>
  467. </view>
  468. </view>
  469. <block wx:if="{{!collapsedCards.oil}}">
  470. <view wx:for="{{oilParameterInputRegisters}}" wx:key="name" class="param-row input-row">
  471. <view class="param-main">
  472. <view class="param-name">{{item.name}}</view>
  473. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue || '--'}}</view>
  474. </view>
  475. <view class="input-wrap">
  476. <input
  477. class="value-input {{item.unit ? 'value-input--with-unit' : ''}}"
  478. type="{{item.unit ? 'text' : 'digit'}}"
  479. placeholder="--"
  480. value="{{item.inputValue}}"
  481. data-index="{{index}}"
  482. data-input-group="oil"
  483. bindinput="onOilParameterInput"
  484. bindblur="onInputBlur"
  485. />
  486. </view>
  487. </view>
  488. </block>
  489. </view>
  490. <view class="panel {{collapsedCards.protectionSwitch ? 'panel--collapsed' : ''}}">
  491. <view class="panel-header panel-header--with-actions">
  492. <view
  493. class="panel-heading-toggle {{collapsedCards.protectionSwitch ? 'is-collapsed' : ''}}"
  494. data-card="protectionSwitch"
  495. bindtap="toggleCard"
  496. >
  497. <view class="panel-icon icon-shield-check"></view>
  498. <view class="panel-title">保护控制</view>
  499. </view>
  500. <view class="panel-actions">
  501. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="protectionSwitch" bindtap="onGroupRead">读取</view>
  502. </view>
  503. <view
  504. class="collapse-toggle {{collapsedCards.protectionSwitch ? 'is-collapsed' : ''}}"
  505. data-card="protectionSwitch"
  506. bindtap="toggleCard"
  507. >
  508. <view class="collapse-indicator"></view>
  509. </view>
  510. </view>
  511. <block wx:if="{{!collapsedCards.protectionSwitch}}">
  512. <view wx:for="{{protectionSwitchRegisters}}" wx:key="address" class="param-row">
  513. <view class="param-main">
  514. <view class="param-name">{{item.name}}</view>
  515. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue}}</view>
  516. </view>
  517. <switch
  518. checked="{{item.value}}"
  519. color="#0f766e"
  520. disabled="{{!connectedDevice}}"
  521. data-index="{{index}}"
  522. bindchange="onProtectionSwitchChange"
  523. />
  524. </view>
  525. </block>
  526. </view>
  527. <view class="panel {{collapsedCards.protection ? 'panel--collapsed' : ''}}">
  528. <view class="panel-header panel-header--with-actions">
  529. <view
  530. class="panel-heading-toggle {{collapsedCards.protection ? 'is-collapsed' : ''}}"
  531. data-card="protection"
  532. bindtap="toggleCard"
  533. >
  534. <view class="panel-icon icon-shield-alert"></view>
  535. <view class="panel-title">保护参数</view>
  536. </view>
  537. <view class="panel-actions">
  538. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="protection" bindtap="onGroupRead">读取</view>
  539. <view class="panel-action-button {{connectedDevice ? '' : 'is-disabled'}}" data-group="protection" bindtap="onGroupWrite">写入</view>
  540. </view>
  541. <view
  542. class="collapse-toggle {{collapsedCards.protection ? 'is-collapsed' : ''}}"
  543. data-card="protection"
  544. bindtap="toggleCard"
  545. >
  546. <view class="collapse-indicator"></view>
  547. </view>
  548. </view>
  549. <block wx:if="{{!collapsedCards.protection}}">
  550. <view wx:for="{{protectionDisplayRegisters}}" wx:key="name" class="param-row">
  551. <view class="param-main">
  552. <view class="param-name">{{item.name}}</view>
  553. <view class="param-meta {{item.isDirty ? 'param-meta--dirty' : ''}}">{{item.addressDisplay}} {{item.writeValue || '--'}}</view>
  554. </view>
  555. <view class="input-wrap">
  556. <input
  557. class="value-input {{item.unit ? 'value-input--with-unit' : ''}}"
  558. type="{{item.unit ? 'text' : 'digit'}}"
  559. placeholder="--"
  560. value="{{item.inputValue}}"
  561. data-index="{{item.sourceIndex}}"
  562. data-input-group="protection"
  563. bindinput="onProtectionInputChange"
  564. bindblur="onInputBlur"
  565. />
  566. </view>
  567. </view>
  568. </block>
  569. </view>
  570. <view class="panel {{collapsedCards.status ? 'panel--collapsed' : ''}}">
  571. <view class="panel-header panel-header--with-actions">
  572. <view
  573. class="panel-heading-toggle {{collapsedCards.status ? 'is-collapsed' : ''}}"
  574. data-card="status"
  575. bindtap="toggleCard"
  576. >
  577. <view class="panel-icon icon-status"></view>
  578. <view class="panel-title">状态</view>
  579. </view>
  580. <view class="panel-actions panel-actions--status">
  581. <view class="status-auto-controls">
  582. <input
  583. class="auto-read-interval"
  584. type="number"
  585. value="{{autoReadInterval}}"
  586. bindinput="onAutoReadIntervalInput"
  587. />
  588. <text class="auto-read-unit">ms</text>
  589. <view
  590. class="panel-action-button auto-read-button {{autoReadStatus ? 'is-active' : ''}} {{autoReadStatus || canReadStatus ? '' : 'is-disabled'}}"
  591. bindtap="onAutoReadStatusTap"
  592. >
  593. {{autoReadStatus ? '停止' : '自动'}}
  594. </view>
  595. </view>
  596. <view
  597. class="panel-action-button {{canReadStatus ? '' : 'is-disabled'}}"
  598. bindtap="readStatus"
  599. >
  600. 读取
  601. </view>
  602. </view>
  603. <view
  604. class="collapse-toggle {{collapsedCards.status ? 'is-collapsed' : ''}}"
  605. data-card="status"
  606. bindtap="toggleCard"
  607. >
  608. <view class="collapse-indicator"></view>
  609. </view>
  610. </view>
  611. <block wx:if="{{!collapsedCards.status}}">
  612. <view wx:for="{{statusRegisters}}" wx:key="name" class="param-row">
  613. <view class="param-main">
  614. <view class="param-name">{{item.name}}</view>
  615. <view class="param-meta">{{item.addressDisplay}} {{item.rawValue}}</view>
  616. </view>
  617. <view class="param-value">{{item.displayValue}}{{item.displayUnit ? ' ' + item.displayUnit : ''}}</view>
  618. </view>
  619. </block>
  620. </view>
  621. </view>
  622. </scroll-view>