DebugView.axaml 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398
  1. <UserControl
  2. x:Class="ShakerApp.Views.DebugView"
  3. xmlns="https://github.com/avaloniaui"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:local="using:ShakerApp"
  7. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  8. xmlns:suki="https://github.com/kikipoulet/SukiUI"
  9. xmlns:vm="using:ShakerApp.ViewModels"
  10. d:DesignHeight="450"
  11. d:DesignWidth="800"
  12. x:DataType="vm:ShakerControlViewModel"
  13. DataContext="{Binding Source={x:Static vm:ShakerControlViewModel.Instance}}"
  14. mc:Ignorable="d">
  15. <TabControl>
  16. <TabItem Header="{DynamicResource Displacement}">
  17. <suki:GlassCard HorizontalAlignment="Center" VerticalAlignment="Center">
  18. <Grid Width="420" Height="140">
  19. <Grid.ColumnDefinitions>
  20. <ColumnDefinition />
  21. <ColumnDefinition />
  22. </Grid.ColumnDefinitions>
  23. <Grid.RowDefinitions>
  24. <RowDefinition />
  25. <RowDefinition />
  26. </Grid.RowDefinitions>
  27. <StackPanel
  28. Grid.Row="0"
  29. Grid.Column="0"
  30. HorizontalAlignment="Left"
  31. VerticalAlignment="Center"
  32. Orientation="Vertical">
  33. <TextBlock VerticalAlignment="Center" Text="{DynamicResource DisplacementP}" />
  34. <NumericUpDown
  35. Width="120"
  36. Margin="0,0,0,0"
  37. Value="{Binding DisplacementP}" />
  38. </StackPanel>
  39. <StackPanel
  40. Grid.Row="0"
  41. Grid.Column="1"
  42. HorizontalAlignment="Left"
  43. VerticalAlignment="Center"
  44. Orientation="Vertical">
  45. <TextBlock VerticalAlignment="Center" Text="{DynamicResource DisplacementI}" />
  46. <NumericUpDown
  47. Width="120"
  48. Margin="0,0,0,0"
  49. Value="{Binding DisplacementI}" />
  50. </StackPanel>
  51. <StackPanel
  52. Grid.Row="1"
  53. Grid.Column="0"
  54. HorizontalAlignment="Left"
  55. VerticalAlignment="Center"
  56. Orientation="Vertical">
  57. <TextBlock VerticalAlignment="Center" Text="{DynamicResource MaxDisplacementIntegral}" />
  58. <NumericUpDown
  59. Width="120"
  60. Margin="0,0,0,0"
  61. Value="{Binding MaxDisplacementIntegral}" />
  62. </StackPanel>
  63. </Grid>
  64. </suki:GlassCard>
  65. </TabItem>
  66. <TabItem Header="{DynamicResource ServoValveConfig}">
  67. <suki:GlassCard HorizontalAlignment="Center" VerticalAlignment="Center">
  68. <Grid Width="520" Height="340">
  69. <Grid.ColumnDefinitions>
  70. <ColumnDefinition />
  71. <ColumnDefinition />
  72. </Grid.ColumnDefinitions>
  73. <Grid.RowDefinitions>
  74. <RowDefinition Height="66" />
  75. <RowDefinition Height="*" />
  76. </Grid.RowDefinitions>
  77. <StackPanel
  78. Grid.Column="1"
  79. HorizontalAlignment="Left"
  80. VerticalAlignment="Center"
  81. Orientation="Vertical">
  82. <TextBlock VerticalAlignment="Center" Text="{DynamicResource DisOpenLoop}" />
  83. <ToggleSwitch IsChecked="{Binding DisplacementOpenLoop}" />
  84. </StackPanel>
  85. <StackPanel Grid.Column="0">
  86. <TextBlock Text="{DynamicResource ServoValvePolarity}" />
  87. <ComboBox
  88. Width="120"
  89. HorizontalAlignment="Left"
  90. VerticalAlignment="Center"
  91. ItemsSource="{Binding ValvePolarity, Converter={StaticResource EnumToCollectionConverter}, Mode=OneTime}"
  92. SelectedValue="{Binding Path=ValvePolarity}"
  93. SelectedValueBinding="{Binding Value}">
  94. <ComboBox.ItemTemplate>
  95. <DataTemplate>
  96. <TextBlock Text="{local:ResourceBinding Key}" />
  97. </DataTemplate>
  98. </ComboBox.ItemTemplate>
  99. </ComboBox>
  100. </StackPanel>
  101. <StackPanel
  102. Grid.Row="1"
  103. Grid.ColumnSpan="2"
  104. Margin="0,0,10,0"
  105. Orientation="Vertical">
  106. <Grid Height="{StaticResource ItemHeight}" Background="LightGray">
  107. <Grid.ColumnDefinitions>
  108. <ColumnDefinition Width="66" />
  109. <ColumnDefinition Width="*" />
  110. <ColumnDefinition Width="*" />
  111. </Grid.ColumnDefinitions>
  112. <TextBlock
  113. HorizontalAlignment="Center"
  114. VerticalAlignment="Center"
  115. Text="{DynamicResource ServoValveIndex}" />
  116. <TextBlock
  117. Grid.Column="1"
  118. HorizontalAlignment="Center"
  119. VerticalAlignment="Center">
  120. <Run Text="{DynamicResource ServoValveOffset}" />
  121. <Run Text="(V)" />
  122. </TextBlock>
  123. <TextBlock
  124. Grid.Column="2"
  125. HorizontalAlignment="Center"
  126. VerticalAlignment="Center">
  127. <Run Text="{DynamicResource OpenLoopVoltage}" />
  128. <Run Text="(V)" />
  129. </TextBlock>
  130. </Grid>
  131. <ItemsControl ItemsSource="{Binding ValveConfig}">
  132. <ItemsControl.ItemTemplate>
  133. <DataTemplate>
  134. <Grid Height="{StaticResource ItemHeight}" Margin="0,4,0,4">
  135. <Grid.ColumnDefinitions>
  136. <ColumnDefinition Width="66" />
  137. <ColumnDefinition Width="*" />
  138. <ColumnDefinition Width="*" />
  139. </Grid.ColumnDefinitions>
  140. <TextBlock
  141. HorizontalAlignment="Center"
  142. VerticalAlignment="Center"
  143. Text="{Binding Index}" />
  144. <NumericUpDown
  145. Grid.Column="1"
  146. Width="120"
  147. HorizontalAlignment="Center"
  148. VerticalAlignment="Center"
  149. Value="{Binding Value.Bias}" />
  150. <NumericUpDown
  151. Grid.Column="2"
  152. Width="120"
  153. HorizontalAlignment="Center"
  154. VerticalAlignment="Center"
  155. IsEnabled="{Binding $parent[ItemsControl].DataContext.DisplacementOpenLoop}"
  156. Value="{Binding Value.OpenLoopDrive}" />
  157. </Grid>
  158. </DataTemplate>
  159. </ItemsControl.ItemTemplate>
  160. </ItemsControl>
  161. </StackPanel>
  162. </Grid>
  163. </suki:GlassCard>
  164. </TabItem>
  165. <TabItem Header="{DynamicResource Other}">
  166. <Grid>
  167. <Grid.ColumnDefinitions>
  168. <ColumnDefinition />
  169. <ColumnDefinition />
  170. </Grid.ColumnDefinitions>
  171. <Grid.RowDefinitions>
  172. <RowDefinition />
  173. <RowDefinition />
  174. </Grid.RowDefinitions>
  175. <suki:GlassCard
  176. Grid.Column="1"
  177. Width="280"
  178. Height="160"
  179. VerticalAlignment="Top">
  180. <suki:GroupBox Header="{DynamicResource DebugConfig}">
  181. <StackPanel Orientation="Vertical">
  182. <StackPanel VerticalAlignment="Top" Orientation="Horizontal">
  183. <TextBlock
  184. HorizontalAlignment="Center"
  185. VerticalAlignment="Center"
  186. Text="{DynamicResource SelfCloseLoop}" />
  187. <ToggleSwitch IsChecked="{Binding SelfLoop}" />
  188. </StackPanel>
  189. <StackPanel
  190. Margin="0,10,0,0"
  191. VerticalAlignment="Top"
  192. Orientation="Horizontal">
  193. <TextBlock
  194. HorizontalAlignment="Center"
  195. VerticalAlignment="Center"
  196. Text="Debug" />
  197. <ToggleSwitch IsChecked="{Binding Debug}" />
  198. </StackPanel>
  199. </StackPanel>
  200. </suki:GroupBox>
  201. </suki:GlassCard>
  202. <suki:GlassCard
  203. Grid.Row="0"
  204. Width="280"
  205. Height="180"
  206. VerticalAlignment="Top">
  207. <suki:GroupBox Header="{DynamicResource FlutterConfig}">
  208. <StackPanel>
  209. <StackPanel VerticalAlignment="Top" Orientation="Horizontal">
  210. <TextBlock
  211. HorizontalAlignment="Center"
  212. VerticalAlignment="Center"
  213. Text="{DynamicResource FlutterFrequency}" />
  214. <NumericUpDown
  215. Width="120"
  216. Margin="4,0,0,0"
  217. Increment="0.01"
  218. Minimum="10"
  219. Value="{Binding FlutterFrequency}" />
  220. <TextBlock
  221. HorizontalAlignment="Center"
  222. VerticalAlignment="Center"
  223. Text="Hz" />
  224. </StackPanel>
  225. <StackPanel
  226. Margin="0,10,0,0"
  227. VerticalAlignment="Top"
  228. Orientation="Horizontal">
  229. <TextBlock
  230. HorizontalAlignment="Center"
  231. VerticalAlignment="Center"
  232. Text="{DynamicResource FlutterAmpt}" />
  233. <NumericUpDown
  234. Width="120"
  235. Margin="4,0,0,0"
  236. Increment="0.01"
  237. Minimum="0.01"
  238. Value="{Binding FlutterAmpt}" />
  239. <TextBlock
  240. HorizontalAlignment="Center"
  241. VerticalAlignment="Center"
  242. Text="mm" />
  243. </StackPanel>
  244. </StackPanel>
  245. </suki:GroupBox>
  246. </suki:GlassCard>
  247. </Grid>
  248. </TabItem>
  249. <TabItem Header="{DynamicResource SweepControl}">
  250. <Grid>
  251. <Grid.RowDefinitions>
  252. <RowDefinition Height="*" />
  253. <RowDefinition Height="56" />
  254. </Grid.RowDefinitions>
  255. <suki:GlassCard Width="900">
  256. <StackPanel Width="820" Orientation="Vertical">
  257. <Grid Height="{StaticResource ItemHeight}" Background="LightGray">
  258. <Grid.ColumnDefinitions>
  259. <ColumnDefinition Width="36" />
  260. <ColumnDefinition />
  261. <ColumnDefinition />
  262. <ColumnDefinition />
  263. <ColumnDefinition />
  264. <ColumnDefinition />
  265. </Grid.ColumnDefinitions>
  266. <TextBlock
  267. HorizontalAlignment="Center"
  268. VerticalAlignment="Center"
  269. Text="{DynamicResource ServoValveIndex}" />
  270. <TextBlock
  271. Grid.Column="1"
  272. HorizontalAlignment="Center"
  273. VerticalAlignment="Center">
  274. <Run Text="{DynamicResource Frequency}" />
  275. <Run Text="(Hz)" />
  276. </TextBlock>
  277. <TextBlock
  278. Grid.Column="2"
  279. HorizontalAlignment="Center"
  280. VerticalAlignment="Center"
  281. Text="{DynamicResource UpDateInvert}" />
  282. <TextBlock
  283. Grid.Column="3"
  284. HorizontalAlignment="Center"
  285. VerticalAlignment="Center"
  286. Text="{DynamicResource ExponentialCoefficients}" />
  287. <TextBlock
  288. Grid.Column="4"
  289. HorizontalAlignment="Center"
  290. VerticalAlignment="Center"
  291. Text="{DynamicResource CompressionRate}" />
  292. <TextBlock
  293. Grid.Column="5"
  294. HorizontalAlignment="Center"
  295. VerticalAlignment="Center"
  296. Text="{DynamicResource AdjustMagnitude}" />
  297. </Grid>
  298. <ScrollViewer Height="320">
  299. <ItemsControl ItemsSource="{Binding ControlItems}">
  300. <ItemsControl.ItemTemplate>
  301. <DataTemplate>
  302. <Grid Height="{StaticResource ItemHeight}" Margin="0,4,0,4">
  303. <Grid.ColumnDefinitions>
  304. <ColumnDefinition Width="36" />
  305. <ColumnDefinition />
  306. <ColumnDefinition />
  307. <ColumnDefinition />
  308. <ColumnDefinition />
  309. <ColumnDefinition />
  310. </Grid.ColumnDefinitions>
  311. <TextBlock
  312. HorizontalAlignment="Center"
  313. VerticalAlignment="Center"
  314. Text="{Binding Index}" />
  315. <NumericUpDown
  316. Grid.Column="1"
  317. Width="120"
  318. HorizontalAlignment="Center"
  319. VerticalAlignment="Center"
  320. Value="{Binding Value.Frequency}" />
  321. <NumericUpDown
  322. Grid.Column="2"
  323. Width="120"
  324. HorizontalAlignment="Center"
  325. VerticalAlignment="Center"
  326. Increment="1"
  327. Minimum="1"
  328. Value="{Binding Value.UpDateInvert}" />
  329. <NumericUpDown
  330. Grid.Column="3"
  331. Width="120"
  332. HorizontalAlignment="Center"
  333. VerticalAlignment="Center"
  334. Increment="0.01"
  335. Maximum="2"
  336. Minimum="0.01"
  337. Value="{Binding Value.ExponentialCoefficients}" />
  338. <NumericUpDown
  339. Grid.Column="4"
  340. Width="120"
  341. HorizontalAlignment="Center"
  342. VerticalAlignment="Center"
  343. Increment="1"
  344. Minimum="1"
  345. Value="{Binding Value.CompressionRate}" />
  346. <NumericUpDown
  347. Grid.Column="5"
  348. Width="120"
  349. HorizontalAlignment="Center"
  350. VerticalAlignment="Center"
  351. Increment="0.001"
  352. Maximum="2"
  353. Minimum="0.001"
  354. Value="{Binding Value.AdjustMagnitude}" />
  355. </Grid>
  356. </DataTemplate>
  357. </ItemsControl.ItemTemplate>
  358. </ItemsControl>
  359. </ScrollViewer>
  360. </StackPanel>
  361. </suki:GlassCard>
  362. <StackPanel
  363. Grid.Row="1"
  364. Height="{StaticResource TabItemHeight}"
  365. HorizontalAlignment="Center"
  366. VerticalAlignment="Center"
  367. Orientation="Horizontal">
  368. <Button
  369. Width="120"
  370. Command="{Binding AddCommand}"
  371. Content="{DynamicResource SweepControlAdd}"
  372. IsEnabled="{Binding AddEnabled}" />
  373. <Button
  374. Width="120"
  375. Margin="40,0,0,0"
  376. Command="{Binding DeleteLastCommand}"
  377. Content="{DynamicResource SweepControlDelete}"
  378. IsEnabled="{Binding RemoveEnabled}" />
  379. <Button
  380. Width="120"
  381. Margin="40,0,0,0"
  382. Command="{Binding RefreshCommand}"
  383. Content="{DynamicResource SweepControlRefresh}"
  384. IsEnabled="{Binding RemoveEnabled}" />
  385. </StackPanel>
  386. </Grid>
  387. </TabItem>
  388. </TabControl>
  389. </UserControl>