@@ -0,0 +1,671 @@
$ErrorActionPreference = " Stop "
# ============================================================
# 通用模板函数
# ============================================================
function Write-ViewModel {
param (
[ string ] $ProjectPath , # e.g. "c:\Users\kk\Desktop\BOB"
[ string ] $ClassName , # e.g. "E36233A"
[ string ] $DeviceType , # e.g. "可编程直流电源"
[ string ] $DeviceNamespace , # e.g. "DeviceCommand.Device"
[ string ] $Properties , # C# property block
[ string ] $Commands , # ICommand declarations
[ string ] $CommandInits , # Command initialization in constructor
[ string ] $ExtraUsings = " "
)
$dir = Join-Path $ProjectPath " DeviceEditModule\ViewModels "
if ( ! ( Test-Path $dir ) ) { New-Item -ItemType Directory -Path $dir -Force | Out-Null }
$content = @"
u s i n g $DeviceNamespace ;
u s i n g P r i s m . C o m m a n d s ;
u s i n g P r i s m . I o c ;
u s i n g S y s t e m ;
u s i n g S y s t e m . T h r e a d i n g ;
u s i n g S y s t e m . T h r e a d i n g . T a s k s ;
u s i n g S y s t e m . W i n d o w s . I n p u t ;
u s i n g U I S h a r e . G l o b a l V a r i a b l e ;
u s i n g U I S h a r e . V i e w M o d e l B a s e ;
$ExtraUsings
n a m e s p a c e D e v i c e E d i t M o d u l e . V i e w M o d e l s
{
/ / / < s u m m a r y >
/ / / $ClassName $DeviceType 控 制 面 板 V i e w M o d e l
/ / / < / s u m m a r y >
p u b l i c c l a s s ${ClassName} V i e w M o d e l : N a v i g a t e V i e w M o d e l B a s e , I D i s p o s a b l e
{
# r e g i o n 私 有 字 段
p r i v a t e r e a d o n l y D e v i c e M a n a g e r _ d e v i c e M a n a g e r ;
p r i v a t e ${ClassName} ? _ d e v i c e ;
p r i v a t e C a n c e l l a t i o n T o k e n S o u r c e ? _ c t s ;
# e n d r e g i o n
# r e g i o n 设 备 信 息 属 性
p r i v a t e s t r i n g _ d e v i c e N a m e = " $ClassName " ;
p u b l i c s t r i n g D e v i c e N a m e
{
g e t = > _ d e v i c e N a m e ;
s e t = > S e t P r o p e r t y ( r e f _ d e v i c e N a m e , v a l u e ) ;
}
p r i v a t e b o o l _ i s C o n n e c t e d ;
p u b l i c b o o l I s C o n n e c t e d
{
g e t = > _ i s C o n n e c t e d ;
s e t = > S e t P r o p e r t y ( r e f _ i s C o n n e c t e d , v a l u e ) ;
}
p r i v a t e b o o l _ i s B u s y ;
/ / / < s u m m a r y > 正 在 执 行 设 备 命 令 时 为 t r u e , 用 于 U I 忙 碌 状 态 指 示 。 < / s u m m a r y >
p u b l i c b o o l I s B u s y
{
g e t = > _ i s B u s y ;
s e t = > S e t P r o p e r t y ( r e f _ i s B u s y , v a l u e ) ;
}
# e n d r e g i o n
$Properties
p r i v a t e s t r i n g _ r e s p o n s e L o g = s t r i n g . E m p t y ;
/ / / < s u m m a r y > 命 令 响 应 日 志 ( 最 新 消 息 在 顶 部 ) 。 < / s u m m a r y >
p u b l i c s t r i n g R e s p o n s e L o g
{
g e t = > _ r e s p o n s e L o g ;
s e t = > S e t P r o p e r t y ( r e f _ r e s p o n s e L o g , v a l u e ) ;
}
# e n d r e g i o n
# r e g i o n 命 令
$Commands
# e n d r e g i o n
p u b l i c ${ClassName} V i e w M o d e l ( I C o n t a i n e r P r o v i d e r c o n t a i n e r P r o v i d e r ) : b a s e ( c o n t a i n e r P r o v i d e r )
{
_ d e v i c e M a n a g e r = c o n t a i n e r P r o v i d e r . R e s o l v e < D e v i c e M a n a g e r > ( ) ;
$CommandInits
I n i t i a l i z e ( ) ;
}
# r e g i o n 初 始 化 / N a v i g a t i o n
p u b l i c v o i d I n i t i a l i z e ( s t r i n g ? d e v i c e N a m e = n u l l )
{
${ClassName} ? f o u n d = n u l l ;
s t r i n g ? f o u n d N a m e = n u l l ;
i f ( d e v i c e N a m e ! = n u l l & &
_ d e v i c e M a n a g e r . D e v i c e M a p . T r y G e t V a l u e ( d e v i c e N a m e , o u t v a r d ) & &
d i s ${ClassName} e )
{
f o u n d = e ;
f o u n d N a m e = d e v i c e N a m e ;
}
e l s e
{
f o r e a c h ( v a r k v i n _ d e v i c e M a n a g e r . D e v i c e M a p )
{
i f ( k v . V a l u e i s ${ClassName} i t )
{
f o u n d = i t ;
f o u n d N a m e = k v . K e y ;
b r e a k ;
}
}
}
_ d e v i c e = f o u n d ;
D e v i c e N a m e = f o u n d N a m e ? ? " $ClassName ( 未 找 到 ) " ;
I s C o n n e c t e d = _ d e v i c e ? . I s C o n n e c t e d ? ? f a l s e ;
A p p e n d L o g ( f o u n d ! = n u l l
? $ " 已 关 联 设 备 [ { D e v i c e N a m e } ] , 连 接 状 态 : { ( I s C o n n e c t e d ? " 已 连 接 " : " 未 连 接 " ) } "
: " 未 在 D e v i c e M a n a g e r 中 找 到 $ClassName 设 备 , 请 先 初 始 化 设 备 配 置 。 " ) ;
}
p u b l i c o v e r r i d e v o i d O n N a v i g a t e d T o ( N a v i g a t i o n C o n t e x t c o n t e x t )
{
v a r n a m e = c o n t e x t . P a r a m e t e r s . G e t V a l u e < s t r i n g ? > ( " D e v i c e N a m e " ) ;
I n i t i a l i z e ( n a m e ) ;
}
# e n d r e g i o n
# r e g i o n 辅 助
p r i v a t e C a n c e l l a t i o n T o k e n C t ( ) = > ( _ c t s = n e w C a n c e l l a t i o n T o k e n S o u r c e ( T i m e S p a n . F r o m S e c o n d s ( 1 0 ) ) ) . T o k e n ;
p r i v a t e a s y n c T a s k E x e c ( F u n c < T a s k > a c t i o n )
{
i f ( _ d e v i c e = = n u l l )
{
A p p e n d L o g ( " 错 误 : 未 关 联 到 设 备 实 例 , 请 检 查 设 备 配 置 。 " ) ;
r e t u r n ;
}
i f ( I s B u s y ) r e t u r n ;
I s B u s y = t r u e ;
t r y
{
a w a i t a c t i o n ( ) ;
I s C o n n e c t e d = _ d e v i c e . I s C o n n e c t e d ;
}
c a t c h ( O p e r a t i o n C a n c e l e d E x c e p t i o n )
{
A p p e n d L o g ( " 命 令 超 时 或 已 取 消 。 " ) ;
}
c a t c h ( E x c e p t i o n e x )
{
A p p e n d L o g ( $ " 错 误 : { e x . M e s s a g e } " ) ;
}
f i n a l l y
{
I s B u s y = f a l s e ;
}
}
p r i v a t e v o i d A p p e n d L o g ( s t r i n g m e s s a g e )
{
v a r l i n e = $ " [ { D a t e T i m e . N o w : H H : m m : s s } ] { m e s s a g e } " ;
R e s p o n s e L o g = R e s p o n s e L o g . L e n g t h > 4 0 0 0
? l i n e + " \ n " + R e s p o n s e L o g [ . . 3 0 0 0 ]
: l i n e + " \ n " + R e s p o n s e L o g ;
}
# e n d r e g i o n
p u b l i c v o i d D i s p o s e ( )
{
_ c t s ? . C a n c e l ( ) ;
_ c t s ? . D i s p o s e ( ) ;
}
}
}
"@
$file = Join-Path $dir " ${ClassName} ViewModel.cs "
[ System.IO.File ] :: WriteAllText ( $file , $content , [ System.Text.Encoding ] :: UTF8 )
Write-Host " Created: $file "
}
function Write-ViewXaml {
param (
[ string ] $ProjectPath ,
[ string ] $ClassName ,
[ string ] $DeviceTitle , # e.g. "E36233A 可编程直流电源"
[ string ] $Icon , # e.g. "Flash"
[ string ] $LeftGroups , # GroupBox XAML blocks for left column
[ string ] $RightGroups # GroupBox XAML blocks for right column
)
$dir = Join-Path $ProjectPath " DeviceEditModule\Views "
if ( ! ( Test-Path $dir ) ) { New-Item -ItemType Directory -Path $dir -Force | Out-Null }
$content = @"
< U s e r C o n t r o l x : C l a s s = " D e v i c e E d i t M o d u l e . V i e w s . ${ClassName} V i e w "
x m l n s = " h t t p : / / s c h e m a s . m i c r o s o f t . c o m / w i n f x / 2 0 0 6 / x a m l / p r e s e n t a t i o n "
x m l n s : x = " h t t p : / / s c h e m a s . m i c r o s o f t . c o m / w i n f x / 2 0 0 6 / x a m l "
x m l n s : m c = " h t t p : / / s c h e m a s . o p e n x m l f o r m a t s . o r g / m a r k u p - c o m p a t i b i l i t y / 2 0 0 6 "
x m l n s : d = " h t t p : / / s c h e m a s . m i c r o s o f t . c o m / e x p r e s s i o n / b l e n d / 2 0 0 8 "
x m l n s : p r i s m = " h t t p : / / p r i s m l i b r a r y . c o m / "
x m l n s : m a t e r i a l D e s i g n = " h t t p : / / m a t e r i a l d e s i g n i n x a m l . n e t / w i n f x / x a m l / t h e m e s "
x m l n s : c o n v e r t e r s = " c l r - n a m e s p a c e : U I S h a r e . C o n v e r t e r s ; a s s e m b l y = U I S h a r e "
m c : I g n o r a b l e = " d "
p r i s m : V i e w M o d e l L o c a t o r . A u t o W i r e V i e w M o d e l = " F a l s e "
d : D e s i g n H e i g h t = " 7 6 0 " d : D e s i g n W i d t h = " 8 6 0 " >
< U s e r C o n t r o l . R e s o u r c e s >
< c o n v e r t e r s : B o o l e a n T o V i s i b i l i t y C o n v e r t e r x : K e y = " B o o l T o V i s " / >
< / U s e r C o n t r o l . R e s o u r c e s >
< S c r o l l V i e w e r V e r t i c a l S c r o l l B a r V i s i b i l i t y = " A u t o " H o r i z o n t a l S c r o l l B a r V i s i b i l i t y = " D i s a b l e d " >
< S t a c k P a n e l M a r g i n = " 1 2 " >
< ! - - = = = 设 备 信 息 头 = = = - - >
< m a t e r i a l D e s i g n : C a r d M a r g i n = " 0 , 0 , 0 , 8 " P a d d i n g = " 1 2 , 8 " >
< G r i d >
< G r i d . C o l u m n D e f i n i t i o n s >
< C o l u m n D e f i n i t i o n W i d t h = " A u t o " / >
< C o l u m n D e f i n i t i o n W i d t h = " * " / >
< C o l u m n D e f i n i t i o n W i d t h = " A u t o " / >
< / G r i d . C o l u m n D e f i n i t i o n s >
< S t a c k P a n e l O r i e n t a t i o n = " H o r i z o n t a l " V e r t i c a l A l i g n m e n t = " C e n t e r " >
< m a t e r i a l D e s i g n : P a c k I c o n K i n d = " $Icon " W i d t h = " 2 2 " H e i g h t = " 2 2 "
F o r e g r o u n d = " # 1 5 6 5 C 0 " M a r g i n = " 0 , 0 , 8 , 0 "
V e r t i c a l A l i g n m e n t = " C e n t e r " / >
< T e x t B l o c k T e x t = " $DeviceTitle "
F o n t S i z e = " 1 5 " F o n t W e i g h t = " B o l d "
V e r t i c a l A l i g n m e n t = " C e n t e r " / >
< T e x t B l o c k T e x t = " { B i n d i n g D e v i c e N a m e , S t r i n g F o r m a t = ' [ { 0 } ] ' } "
F o n t S i z e = " 1 3 " F o r e g r o u n d = " # 7 5 7 5 7 5 "
V e r t i c a l A l i g n m e n t = " C e n t e r " M a r g i n = " 4 , 0 , 0 , 0 " / >
< / S t a c k P a n e l >
< ! - - 连 接 状 态 指 示 - - >
< S t a c k P a n e l G r i d . C o l u m n = " 2 " O r i e n t a t i o n = " H o r i z o n t a l " V e r t i c a l A l i g n m e n t = " C e n t e r " >
< B o r d e r W i d t h = " 1 0 " H e i g h t = " 1 0 " C o r n e r R a d i u s = " 5 " M a r g i n = " 0 , 0 , 6 , 0 " >
< B o r d e r . S t y l e >
< S t y l e T a r g e t T y p e = " B o r d e r " >
< S e t t e r P r o p e r t y = " B a c k g r o u n d " V a l u e = " # F 4 4 3 3 6 " / >
< S t y l e . T r i g g e r s >
< D a t a T r i g g e r B i n d i n g = " { B i n d i n g I s C o n n e c t e d } " V a l u e = " T r u e " >
< S e t t e r P r o p e r t y = " B a c k g r o u n d " V a l u e = " # 4 C A F 5 0 " / >
< / D a t a T r i g g e r >
< / S t y l e . T r i g g e r s >
< / S t y l e >
< / B o r d e r . S t y l e >
< / B o r d e r >
< T e x t B l o c k V e r t i c a l A l i g n m e n t = " C e n t e r " F o n t S i z e = " 1 2 " >
< T e x t B l o c k . S t y l e >
< S t y l e T a r g e t T y p e = " T e x t B l o c k " >
< S e t t e r P r o p e r t y = " T e x t " V a l u e = " 未 连 接 " / >
< S e t t e r P r o p e r t y = " F o r e g r o u n d " V a l u e = " # F 4 4 3 3 6 " / >
< S t y l e . T r i g g e r s >
< D a t a T r i g g e r B i n d i n g = " { B i n d i n g I s C o n n e c t e d } " V a l u e = " T r u e " >
< S e t t e r P r o p e r t y = " T e x t " V a l u e = " 已 连 接 " / >
< S e t t e r P r o p e r t y = " F o r e g r o u n d " V a l u e = " # 4 C A F 5 0 " / >
< / D a t a T r i g g e r >
< / S t y l e . T r i g g e r s >
< / S t y l e >
< / T e x t B l o c k . S t y l e >
< / T e x t B l o c k >
< ! - - 忙 碌 指 示 - - >
< P r o g r e s s B a r I s I n d e t e r m i n a t e = " T r u e " W i d t h = " 8 0 " H e i g h t = " 4 "
M a r g i n = " 1 2 , 0 , 0 , 0 "
V i s i b i l i t y = " { B i n d i n g I s B u s y , C o n v e r t e r = { S t a t i c R e s o u r c e B o o l T o V i s } } " / >
< / S t a c k P a n e l >
< / G r i d >
< / m a t e r i a l D e s i g n : C a r d >
< ! - - = = = 主 体 2 列 = = = - - >
< G r i d >
< G r i d . C o l u m n D e f i n i t i o n s >
< C o l u m n D e f i n i t i o n W i d t h = " * " / >
< C o l u m n D e f i n i t i o n W i d t h = " * " / >
< / G r i d . C o l u m n D e f i n i t i o n s >
< ! - - 左 列 - - >
< S t a c k P a n e l G r i d . C o l u m n = " 0 " M a r g i n = " 0 , 0 , 4 , 0 " >
$LeftGroups
< / S t a c k P a n e l >
< ! - - 右 列 - - >
< S t a c k P a n e l G r i d . C o l u m n = " 1 " M a r g i n = " 4 , 0 , 0 , 0 " >
$RightGroups
< / S t a c k P a n e l >
< / G r i d >
< / S t a c k P a n e l >
< / S c r o l l V i e w e r >
< / U s e r C o n t r o l >
"@
$file = Join-Path $dir " ${ClassName} View.xaml "
[ System.IO.File ] :: WriteAllText ( $file , $content , [ System.Text.Encoding ] :: UTF8 )
Write-Host " Created: $file "
}
function Write-ViewXamlCs {
param (
[ string ] $ProjectPath ,
[ string ] $ClassName
)
$dir = Join-Path $ProjectPath " DeviceEditModule\Views "
$content = @"
u s i n g S y s t e m . W i n d o w s . C o n t r o l s ;
n a m e s p a c e D e v i c e E d i t M o d u l e . V i e w s
{
/ / / < s u m m a r y >
/ / / ${ClassName} V i e w . x a m l 的 交 互 逻 辑
/ / / < / s u m m a r y >
p u b l i c p a r t i a l c l a s s ${ClassName} V i e w : U s e r C o n t r o l
{
p u b l i c ${ClassName} V i e w ( )
{
I n i t i a l i z e C o m p o n e n t ( ) ;
}
}
}
"@
$file = Join-Path $dir " ${ClassName} View.xaml.cs "
[ System.IO.File ] :: WriteAllText ( $file , $content , [ System.Text.Encoding ] :: UTF8 )
Write-Host " Created: $file "
}
# ============================================================
# XAML 通用片段
# ============================================================
$XamlLogGroup = @"
< ! - - 设 备 信 息 - - >
< G r o u p B o x H e a d e r = " 设 备 信 息 " M a r g i n = " 0 , 0 , 0 , 8 "
m a t e r i a l D e s i g n : C o l o r Z o n e A s s i s t . M o d e = " P r i m a r y L i g h t " >
< S t a c k P a n e l O r i e n t a t i o n = " H o r i z o n t a l " M a r g i n = " 4 , 8 " >
< B u t t o n C o n t e n t = " 查 询 I D N " C o m m a n d = " { B i n d i n g Q u e r y I d e n t i t y C o m m a n d } "
S t y l e = " { S t a t i c R e s o u r c e C m d B t n } " / >
< / S t a c k P a n e l >
< / G r o u p B o x >
< ! - - 响 应 日 志 - - >
< G r o u p B o x H e a d e r = " 响 应 日 志 " M a r g i n = " 0 , 0 , 0 , 8 "
m a t e r i a l D e s i g n : C o l o r Z o n e A s s i s t . M o d e = " P r i m a r y L i g h t " >
< S c r o l l V i e w e r H e i g h t = " 2 6 0 " V e r t i c a l S c r o l l B a r V i s i b i l i t y = " A u t o " >
< T e x t B o x T e x t = " { B i n d i n g R e s p o n s e L o g , M o d e = O n e W a y } "
m a t e r i a l D e s i g n : H i n t A s s i s t . H i n t = " "
I s R e a d O n l y = " T r u e "
T e x t W r a p p i n g = " W r a p "
F o n t S i z e = " 1 1 "
F o n t F a m i l y = " C o n s o l a s "
B a c k g r o u n d = " # F A F A F A "
B o r d e r T h i c k n e s s = " 0 "
V e r t i c a l A l i g n m e n t = " T o p " / >
< / S c r o l l V i e w e r >
< / G r o u p B o x >
"@
function Xaml-OutputControl($onCmd , $offCmd , $onLabel = " 开启输出 " , $offLabel = " 关闭输出 " ) {
return @"
< ! - - 输 出 控 制 - - >
< G r o u p B o x H e a d e r = " 输 出 控 制 " M a r g i n = " 0 , 0 , 0 , 8 "
m a t e r i a l D e s i g n : C o l o r Z o n e A s s i s t . M o d e = " P r i m a r y L i g h t " >
< S t a c k P a n e l M a r g i n = " 4 , 4 , 4 , 4 " >
< S t a c k P a n e l O r i e n t a t i o n = " H o r i z o n t a l " M a r g i n = " 0 , 4 " >
< T e x t B l o c k T e x t = " 主 输 出 " S t y l e = " { S t a t i c R e s o u r c e P a r a m L a b e l } " / >
< B u t t o n C o n t e n t = " $onLabel " C o m m a n d = " { B i n d i n g $onCmd } "
S t y l e = " { S t a t i c R e s o u r c e M a t e r i a l D e s i g n R a i s e d B u t t o n } "
B a c k g r o u n d = " # 3 8 8 E 3 C " F o r e g r o u n d = " W h i t e "
H e i g h t = " 3 2 " P a d d i n g = " 1 2 , 0 " F o n t S i z e = " 1 2 " M a r g i n = " 4 , 0 " / >
< B u t t o n C o n t e n t = " $offLabel " C o m m a n d = " { B i n d i n g $offCmd } "
S t y l e = " { S t a t i c R e s o u r c e W a r n B t n } " / >
< / S t a c k P a n e l >
< / S t a c k P a n e l >
< / G r o u p B o x >
"@
}
function Xaml-ParamInput($header , $label , $binding , $cmd ) {
return @"
< ! - - $header - - >
< G r o u p B o x H e a d e r = " $header " M a r g i n = " 0 , 0 , 0 , 8 "
m a t e r i a l D e s i g n : C o l o r Z o n e A s s i s t . M o d e = " P r i m a r y L i g h t " >
< S t a c k P a n e l M a r g i n = " 4 , 4 , 4 , 4 " >
< S t a c k P a n e l O r i e n t a t i o n = " H o r i z o n t a l " M a r g i n = " 0 , 4 " >
< T e x t B l o c k T e x t = " $label " S t y l e = " { S t a t i c R e s o u r c e P a r a m L a b e l } " / >
< T e x t B o x S t y l e = " { S t a t i c R e s o u r c e N u m I n p u t } "
m a t e r i a l D e s i g n : H i n t A s s i s t . H i n t = " "
T e x t = " { B i n d i n g $binding , U p d a t e S o u r c e T r i g g e r = P r o p e r t y C h a n g e d } " / >
< B u t t o n C o n t e n t = " 设 置 " C o m m a n d = " { B i n d i n g $cmd } "
S t y l e = " { S t a t i c R e s o u r c e C m d B t n } " / >
< / S t a c k P a n e l >
< / S t a c k P a n e l >
< / G r o u p B o x >
"@
}
function Xaml-Measure($label , $binding , $unit ) {
return @"
< S t a c k P a n e l O r i e n t a t i o n = " H o r i z o n t a l " M a r g i n = " 0 , 4 " >
< T e x t B l o c k T e x t = " $label " S t y l e = " { S t a t i c R e s o u r c e P a r a m L a b e l } " / >
< T e x t B o x S t y l e = " { S t a t i c R e s o u r c e M e a s u r e B o x } "
m a t e r i a l D e s i g n : H i n t A s s i s t . H i n t = " "
T e x t = " { B i n d i n g $binding , M o d e = O n e W a y } " / >
< T e x t B l o c k T e x t = " $unit " V e r t i c a l A l i g n m e n t = " C e n t e r " M a r g i n = " 2 , 0 , 8 , 0 " / >
< / S t a c k P a n e l >
"@
}
function Xaml-MeasureGroup($header , $measures , $refreshCmd = $null ) {
$refreshBtn = " "
if ( $refreshCmd ) {
$refreshBtn = @"
< B u t t o n C o n t e n t = " 刷 新 全 部 测 量 " C o m m a n d = " { B i n d i n g $refreshCmd } "
S t y l e = " { S t a t i c R e s o u r c e C m d B t n } "
H o r i z o n t a l A l i g n m e n t = " L e f t " M a r g i n = " 0 , 4 , 0 , 0 " / >
"@
}
return @"
< ! - - $header - - >
< G r o u p B o x H e a d e r = " $header " M a r g i n = " 0 , 0 , 0 , 8 "
m a t e r i a l D e s i g n : C o l o r Z o n e A s s i s t . M o d e = " P r i m a r y L i g h t " >
< S t a c k P a n e l M a r g i n = " 4 , 4 , 4 , 4 " >
$measures
$refreshBtn
< / S t a c k P a n e l >
< / G r o u p B o x >
"@
}
# ============================================================
# BOB 设备
# ============================================================
$BOB = " c:\Users\kk\Desktop\BOB "
Write-Host " === Generating BOB device edit views === "
# --- 1. E36233A ---
Write-Host " `n --- E36233A --- "
Write-ViewModel -ProjectPath $BOB -ClassName " E36233A " -DeviceType " 可编程直流电源 " -DeviceNamespace " DeviceCommand.Device " `
-Properties @"
# r e g i o n 输 入 参 数 属 性
p r i v a t e d o u b l e _ v o l t a g e = 0 . 0 ;
p u b l i c d o u b l e V o l t a g e { g e t = > _ v o l t a g e ; s e t = > S e t P r o p e r t y ( r e f _ v o l t a g e , v a l u e ) ; }
p r i v a t e d o u b l e _ c u r r e n t = 0 . 0 ;
p u b l i c d o u b l e C u r r e n t { g e t = > _ c u r r e n t ; s e t = > S e t P r o p e r t y ( r e f _ c u r r e n t , v a l u e ) ; }
p r i v a t e d o u b l e _ o c p V a l u e = 0 . 0 ;
p u b l i c d o u b l e O c p V a l u e { g e t = > _ o c p V a l u e ; s e t = > S e t P r o p e r t y ( r e f _ o c p V a l u e , v a l u e ) ; }
p r i v a t e d o u b l e _ o v p V a l u e = 0 . 0 ;
p u b l i c d o u b l e O v p V a l u e { g e t = > _ o v p V a l u e ; s e t = > S e t P r o p e r t y ( r e f _ o v p V a l u e , v a l u e ) ; }
p r i v a t e i n t _ c h a n n e l = 1 ;
p u b l i c i n t C h a n n e l { g e t = > _ c h a n n e l ; s e t = > S e t P r o p e r t y ( r e f _ c h a n n e l , v a l u e ) ; }
# e n d r e g i o n
# r e g i o n 测 量 结 果 属 性
p r i v a t e d o u b l e _ m e a s u r e d V o l t a g e ;
p u b l i c d o u b l e M e a s u r e d V o l t a g e { g e t = > _ m e a s u r e d V o l t a g e ; s e t = > S e t P r o p e r t y ( r e f _ m e a s u r e d V o l t a g e , v a l u e ) ; }
p r i v a t e d o u b l e _ m e a s u r e d C u r r e n t ;
p u b l i c d o u b l e M e a s u r e d C u r r e n t { g e t = > _ m e a s u r e d C u r r e n t ; s e t = > S e t P r o p e r t y ( r e f _ m e a s u r e d C u r r e n t , v a l u e ) ; }
"@ `
-Commands @"
p u b l i c I C o m m a n d Q u e r y I d e n t i t y C o m m a n d { g e t ; }
p u b l i c I C o m m a n d O u t p u t O n C o m m a n d { g e t ; }
p u b l i c I C o m m a n d O u t p u t O f f C o m m a n d { g e t ; }
p u b l i c I C o m m a n d S e t R e m o t e C o m m a n d { g e t ; }
p u b l i c I C o m m a n d S e t V o l t a g e C o m m a n d { g e t ; }
p u b l i c I C o m m a n d S e t C u r r e n t C o m m a n d { g e t ; }
p u b l i c I C o m m a n d S e t O c p C o m m a n d { g e t ; }
p u b l i c I C o m m a n d S e t O v p C o m m a n d { g e t ; }
p u b l i c I C o m m a n d S e t C h a n n e l C o m m a n d { g e t ; }
p u b l i c I C o m m a n d Q u e r y M e a s u r e C o m m a n d { g e t ; }
p u b l i c I C o m m a n d C l e a r P r o t e c t i o n C o m m a n d { g e t ; }
"@ `
-CommandInits @"
Q u e r y I d e n t i t y C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > A p p e n d L o g ( " I D N : " + a w a i t _ d e v i c e ! . 查 询 设 备 信 息 ( C t ( ) ) ) ) ) ;
O u t p u t O n C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 电 源 输 出 ( t r u e , C t ( ) ) ; A p p e n d L o g ( " 输 出 已 开 启 " ) ; } ) ) ;
O u t p u t O f f C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 电 源 输 出 ( f a l s e , C t ( ) ) ; A p p e n d L o g ( " 输 出 已 关 闭 " ) ; } ) ) ;
S e t R e m o t e C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 为 远 程 模 式 ( C t ( ) ) ; A p p e n d L o g ( " 已 切 换 到 远 程 控 制 模 式 " ) ; } ) ) ;
S e t V o l t a g e C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 电 压 ( V o l t a g e , C t ( ) ) ; A p p e n d L o g ( $ " 电 压 已 设 为 { V o l t a g e } V " ) ; } ) ) ;
S e t C u r r e n t C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 电 流 ( C u r r e n t , C t ( ) ) ; A p p e n d L o g ( $ " 电 流 已 设 为 { C u r r e n t } A " ) ; } ) ) ;
S e t O c p C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 电 流 保 护 O C P 电 流 ( O c p V a l u e , C t ( ) ) ; A p p e n d L o g ( $ " O C P 已 设 为 { O c p V a l u e } A " ) ; } ) ) ;
S e t O v p C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 电 压 保 护 O V P 电 压 ( O v p V a l u e , C t ( ) ) ; A p p e n d L o g ( $ " O V P 已 设 为 { O v p V a l u e } V " ) ; } ) ) ;
S e t C h a n n e l C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 通 道 ( C h a n n e l , C t ( ) ) ; A p p e n d L o g ( $ " 通 道 已 设 为 { C h a n n e l } " ) ; } ) ) ;
C l e a r P r o t e c t i o n C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 清 除 电 流 保 护 ( C t ( ) ) ; a w a i t _ d e v i c e ! . 清 除 电 压 保 护 ( C t ( ) ) ; A p p e n d L o g ( " 保 护 已 清 除 " ) ; } ) ) ;
Q u e r y M e a s u r e C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = >
{
M e a s u r e d V o l t a g e = a w a i t _ d e v i c e ! . 查 询 电 压 ( C t ( ) ) ;
M e a s u r e d C u r r e n t = a w a i t _ d e v i c e ! . 查 询 电 流 ( C t ( ) ) ;
A p p e n d L o g ( $ " 测 量 - > 电 压 : { M e a s u r e d V o l t a g e } V 电 流 : { M e a s u r e d C u r r e n t } A " ) ;
} ) ) ;
"@
Write-ViewXaml -ProjectPath $BOB -ClassName " E36233A " -DeviceTitle " E36233A 可编程直流电源 " -Icon " Flash " `
-LeftGroups @"
$( Xaml-OutputControl " OutputOnCommand " " OutputOffCommand " )
< ! - - 通 道 与 系 统 - - >
< G r o u p B o x H e a d e r = " 通 道 与 系 统 " M a r g i n = " 0 , 0 , 0 , 8 "
m a t e r i a l D e s i g n : C o l o r Z o n e A s s i s t . M o d e = " P r i m a r y L i g h t " >
< S t a c k P a n e l M a r g i n = " 4 , 4 , 4 , 4 " >
< S t a c k P a n e l O r i e n t a t i o n = " H o r i z o n t a l " M a r g i n = " 0 , 4 " >
< T e x t B l o c k T e x t = " 通 道 号 " S t y l e = " { S t a t i c R e s o u r c e P a r a m L a b e l } " / >
< T e x t B o x S t y l e = " { S t a t i c R e s o u r c e N u m I n p u t } "
m a t e r i a l D e s i g n : H i n t A s s i s t . H i n t = " "
T e x t = " { B i n d i n g C h a n n e l , U p d a t e S o u r c e T r i g g e r = P r o p e r t y C h a n g e d } " / >
< B u t t o n C o n t e n t = " 切 换 " C o m m a n d = " { B i n d i n g S e t C h a n n e l C o m m a n d } " S t y l e = " { S t a t i c R e s o u r c e C m d B t n } " / >
< / S t a c k P a n e l >
< S t a c k P a n e l O r i e n t a t i o n = " H o r i z o n t a l " M a r g i n = " 0 , 4 " >
< T e x t B l o c k T e x t = " 系 统 操 作 " S t y l e = " { S t a t i c R e s o u r c e P a r a m L a b e l } " / >
< B u t t o n C o n t e n t = " 远 程 控 制 " C o m m a n d = " { B i n d i n g S e t R e m o t e C o m m a n d } " S t y l e = " { S t a t i c R e s o u r c e C m d B t n } " / >
< B u t t o n C o n t e n t = " 清 除 保 护 " C o m m a n d = " { B i n d i n g C l e a r P r o t e c t i o n C o m m a n d } " S t y l e = " { S t a t i c R e s o u r c e W a r n B t n } " / >
< / S t a c k P a n e l >
< / S t a c k P a n e l >
< / G r o u p B o x >
$( Xaml-ParamInput " 电压设置 " " 电压 (V) " " Voltage " " SetVoltageCommand " )
$( Xaml-ParamInput " 电流设置 " " 电流 (A) " " Current " " SetCurrentCommand " )
$( Xaml-ParamInput " OCP设置 " " OCP (A) " " OcpValue " " SetOcpCommand " )
$( Xaml-ParamInput " OVP设置 " " OVP (V) " " OvpValue " " SetOvpCommand " )
"@ `
-RightGroups @"
$( Xaml-MeasureGroup " 实时测量 " " $( Xaml-Measure '实际电压' 'MeasuredVoltage' 'V' )
$( Xaml-Measure '实际电流' 'MeasuredCurrent' 'A' ) " " QueryMeasureCommand " )
$XamlLogGroup
"@
Write-ViewXamlCs -ProjectPath $BOB -ClassName " E36233A "
# --- 2. EAEL9080 ---
Write-Host " `n --- EAEL9080 --- "
Write-ViewModel -ProjectPath $BOB -ClassName " EAEL9080 " -DeviceType " 双向可编程直流电源 " -DeviceNamespace " DeviceCommand.Device " `
-Properties @"
# r e g i o n 输 入 参 数 属 性
p r i v a t e d o u b l e _ v o l t a g e = 0 . 0 ;
p u b l i c d o u b l e V o l t a g e { g e t = > _ v o l t a g e ; s e t = > S e t P r o p e r t y ( r e f _ v o l t a g e , v a l u e ) ; }
p r i v a t e d o u b l e _ c u r r e n t = 0 . 0 ;
p u b l i c d o u b l e C u r r e n t { g e t = > _ c u r r e n t ; s e t = > S e t P r o p e r t y ( r e f _ c u r r e n t , v a l u e ) ; }
p r i v a t e d o u b l e _ p o w e r = 0 . 0 ;
p u b l i c d o u b l e P o w e r { g e t = > _ p o w e r ; s e t = > S e t P r o p e r t y ( r e f _ p o w e r , v a l u e ) ; }
p r i v a t e d o u b l e _ o v p V a l u e = 0 . 0 ;
p u b l i c d o u b l e O v p V a l u e { g e t = > _ o v p V a l u e ; s e t = > S e t P r o p e r t y ( r e f _ o v p V a l u e , v a l u e ) ; }
p r i v a t e d o u b l e _ o c p V a l u e = 0 . 0 ;
p u b l i c d o u b l e O c p V a l u e { g e t = > _ o c p V a l u e ; s e t = > S e t P r o p e r t y ( r e f _ o c p V a l u e , v a l u e ) ; }
# e n d r e g i o n
# r e g i o n 测 量 结 果 属 性
p r i v a t e s t r i n g _ m e a s u r e d V o l t a g e = " " ;
p u b l i c s t r i n g M e a s u r e d V o l t a g e { g e t = > _ m e a s u r e d V o l t a g e ; s e t = > S e t P r o p e r t y ( r e f _ m e a s u r e d V o l t a g e , v a l u e ) ; }
p r i v a t e s t r i n g _ m e a s u r e d C u r r e n t = " " ;
p u b l i c s t r i n g M e a s u r e d C u r r e n t { g e t = > _ m e a s u r e d C u r r e n t ; s e t = > S e t P r o p e r t y ( r e f _ m e a s u r e d C u r r e n t , v a l u e ) ; }
p r i v a t e s t r i n g _ m e a s u r e d P o w e r = " " ;
p u b l i c s t r i n g M e a s u r e d P o w e r { g e t = > _ m e a s u r e d P o w e r ; s e t = > S e t P r o p e r t y ( r e f _ m e a s u r e d P o w e r , v a l u e ) ; }
# e n d r e g i o n
"@ `
-Commands @"
p u b l i c I C o m m a n d Q u e r y I d e n t i t y C o m m a n d { g e t ; }
p u b l i c I C o m m a n d R e s e t D e v i c e C o m m a n d { g e t ; }
p u b l i c I C o m m a n d O u t p u t O n C o m m a n d { g e t ; }
p u b l i c I C o m m a n d O u t p u t O f f C o m m a n d { g e t ; }
p u b l i c I C o m m a n d I n p u t O n C o m m a n d { g e t ; }
p u b l i c I C o m m a n d I n p u t O f f C o m m a n d { g e t ; }
p u b l i c I C o m m a n d S e t V o l t a g e C o m m a n d { g e t ; }
p u b l i c I C o m m a n d S e t C u r r e n t C o m m a n d { g e t ; }
p u b l i c I C o m m a n d S e t P o w e r C o m m a n d { g e t ; }
p u b l i c I C o m m a n d S e t O v p C o m m a n d { g e t ; }
p u b l i c I C o m m a n d S e t O c p C o m m a n d { g e t ; }
p u b l i c I C o m m a n d Q u e r y M e a s u r e C o m m a n d { g e t ; }
p u b l i c I C o m m a n d R e m o t e O n C o m m a n d { g e t ; }
p u b l i c I C o m m a n d R e m o t e O f f C o m m a n d { g e t ; }
"@ `
-CommandInits @"
Q u e r y I d e n t i t y C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > A p p e n d L o g ( " I D N : " + a w a i t _ d e v i c e ! . 查 询 设 备 标 识 ( C t ( ) ) ) ) ) ;
R e s e t D e v i c e C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 重 置 设 备 ( C t ( ) ) ; A p p e n d L o g ( " 设 备 已 重 置 " ) ; } ) ) ;
O u t p u t O n C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 D C 输 出 ( t r u e , C t ( ) ) ; A p p e n d L o g ( " D C 输 出 已 开 启 " ) ; } ) ) ;
O u t p u t O f f C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 D C 输 出 ( f a l s e , C t ( ) ) ; A p p e n d L o g ( " D C 输 出 已 关 闭 " ) ; } ) ) ;
I n p u t O n C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 D C 输 入 ( t r u e , C t ( ) ) ; A p p e n d L o g ( " D C 输 入 已 开 启 " ) ; } ) ) ;
I n p u t O f f C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 D C 输 入 ( f a l s e , C t ( ) ) ; A p p e n d L o g ( " D C 输 入 已 关 闭 " ) ; } ) ) ;
S e t V o l t a g e C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 电 压 ( V o l t a g e , C t ( ) ) ; A p p e n d L o g ( $ " 电 压 已 设 为 { V o l t a g e } V " ) ; } ) ) ;
S e t C u r r e n t C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 电 流 ( C u r r e n t , C t ( ) ) ; A p p e n d L o g ( $ " 电 流 已 设 为 { C u r r e n t } A " ) ; } ) ) ;
S e t P o w e r C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 功 率 ( P o w e r , C t ( ) ) ; A p p e n d L o g ( $ " 功 率 已 设 为 { P o w e r } W " ) ; } ) ) ;
S e t O v p C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 过 压 保 护 ( O v p V a l u e , C t ( ) ) ; A p p e n d L o g ( $ " O V P 已 设 为 { O v p V a l u e } V " ) ; } ) ) ;
S e t O c p C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 设 置 过 流 保 护 ( O c p V a l u e , C t ( ) ) ; A p p e n d L o g ( $ " O C P 已 设 为 { O c p V a l u e } A " ) ; } ) ) ;
R e m o t e O n C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 激 活 远 程 控 制 ( t r u e , C t ( ) ) ; A p p e n d L o g ( " 远 程 控 制 已 激 活 " ) ; } ) ) ;
R e m o t e O f f C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = > { a w a i t _ d e v i c e ! . 激 活 远 程 控 制 ( f a l s e , C t ( ) ) ; A p p e n d L o g ( " 远 程 控 制 已 释 放 " ) ; } ) ) ;
Q u e r y M e a s u r e C o m m a n d = n e w D e l e g a t e C o m m a n d ( a s y n c ( ) = > a w a i t E x e c ( a s y n c ( ) = >
{
M e a s u r e d V o l t a g e = a w a i t _ d e v i c e ! . 查 询 实 际 电 压 ( C t ( ) ) ;
M e a s u r e d C u r r e n t = a w a i t _ d e v i c e ! . 查 询 实 际 电 流 ( C t ( ) ) ;
M e a s u r e d P o w e r = a w a i t _ d e v i c e ! . 查 询 实 际 功 率 ( C t ( ) ) ;
A p p e n d L o g ( $ " 测 量 - > 电 压 : { M e a s u r e d V o l t a g e } 电 流 : { M e a s u r e d C u r r e n t } 功 率 : { M e a s u r e d P o w e r } " ) ;
} ) ) ;
"@
Write-ViewXaml -ProjectPath $BOB -ClassName " EAEL9080 " -DeviceTitle " EA EL9080 双向可编程直流电源 " -Icon " Flash " `
-LeftGroups @"
< ! - - 输 出 / 输 入 控 制 - - >
< G r o u p B o x H e a d e r = " 输 出 / 输 入 控 制 " M a r g i n = " 0 , 0 , 0 , 8 "
m a t e r i a l D e s i g n : C o l o r Z o n e A s s i s t . M o d e = " P r i m a r y L i g h t " >
< S t a c k P a n e l M a r g i n = " 4 , 4 , 4 , 4 " >
< S t a c k P a n e l O r i e n t a t i o n = " H o r i z o n t a l " M a r g i n = " 0 , 4 " >
< T e x t B l o c k T e x t = " 源 模 式 输 出 " S t y l e = " { S t a t i c R e s o u r c e P a r a m L a b e l } " / >
< B u t t o n C o n t e n t = " 开 启 " C o m m a n d = " { B i n d i n g O u t p u t O n C o m m a n d } "
S t y l e = " { S t a t i c R e s o u r c e M a t e r i a l D e s i g n R a i s e d B u t t o n } "
B a c k g r o u n d = " # 3 8 8 E 3 C " F o r e g r o u n d = " W h i t e " H e i g h t = " 3 2 " P a d d i n g = " 1 2 , 0 " F o n t S i z e = " 1 2 " M a r g i n = " 4 , 0 " / >
< B u t t o n C o n t e n t = " 关 闭 " C o m m a n d = " { B i n d i n g O u t p u t O f f C o m m a n d } " S t y l e = " { S t a t i c R e s o u r c e W a r n B t n } " / >
< / S t a c k P a n e l >
< S t a c k P a n e l O r i e n t a t i o n = " H o r i z o n t a l " M a r g i n = " 0 , 4 " >
< T e x t B l o c k T e x t = " 载 模 式 输 入 " S t y l e = " { S t a t i c R e s o u r c e P a r a m L a b e l } " / >
< B u t t o n C o n t e n t = " 开 启 " C o m m a n d = " { B i n d i n g I n p u t O n C o m m a n d } "
S t y l e = " { S t a t i c R e s o u r c e M a t e r i a l D e s i g n R a i s e d B u t t o n } "
B a c k g r o u n d = " # 1 5 6 5 C 0 " F o r e g r o u n d = " W h i t e " H e i g h t = " 3 2 " P a d d i n g = " 1 2 , 0 " F o n t S i z e = " 1 2 " M a r g i n = " 4 , 0 " / >
< B u t t o n C o n t e n t = " 关 闭 " C o m m a n d = " { B i n d i n g I n p u t O f f C o m m a n d } " S t y l e = " { S t a t i c R e s o u r c e W a r n B t n } " / >
< / S t a c k P a n e l >
< S t a c k P a n e l O r i e n t a t i o n = " H o r i z o n t a l " M a r g i n = " 0 , 4 " >
< T e x t B l o c k T e x t = " 远 程 控 制 " S t y l e = " { S t a t i c R e s o u r c e P a r a m L a b e l } " / >
< B u t t o n C o n t e n t = " 激 活 " C o m m a n d = " { B i n d i n g R e m o t e O n C o m m a n d } " S t y l e = " { S t a t i c R e s o u r c e C m d B t n } " / >
< B u t t o n C o n t e n t = " 释 放 " C o m m a n d = " { B i n d i n g R e m o t e O f f C o m m a n d } " S t y l e = " { S t a t i c R e s o u r c e C m d B t n } " / >
< B u t t o n C o n t e n t = " 重 置 设 备 " C o m m a n d = " { B i n d i n g R e s e t D e v i c e C o m m a n d } " S t y l e = " { S t a t i c R e s o u r c e W a r n B t n } " / >
< / S t a c k P a n e l >
< / S t a c k P a n e l >
< / G r o u p B o x >
$( Xaml-ParamInput " 电压设置 " " 电压 (V) " " Voltage " " SetVoltageCommand " )
$( Xaml-ParamInput " 电流设置 " " 电流 (A) " " Current " " SetCurrentCommand " )
$( Xaml-ParamInput " 功率设置 " " 功率 (W) " " Power " " SetPowerCommand " )
$( Xaml-ParamInput " OVP设置 " " OVP (V) " " OvpValue " " SetOvpCommand " )
$( Xaml-ParamInput " OCP设置 " " OCP (A) " " OcpValue " " SetOcpCommand " )
"@ `
-RightGroups @"
$( Xaml-MeasureGroup " 实时测量 " " $( Xaml-Measure '实际电压' 'MeasuredVoltage' 'V' )
$( Xaml-Measure '实际电流' 'MeasuredCurrent' 'A' )
$( Xaml-Measure '实际功率' 'MeasuredPower' 'W' ) " " QueryMeasureCommand " )
$XamlLogGroup
"@
Write-ViewXamlCs -ProjectPath $BOB -ClassName " EAEL9080 "
Write-Host " BOB part 1 done (E36233A, EAEL9080) "