我想使用tcl从包含300个asicgetmse循环的txt文件中扫描以下值。
这是我的计划。
1st设置空数组
asicmse{0 0 0 0 0 0 0 0}
然后,设置正文
*mse {set s s_getmse}
最后进行扫描,
这是一个例子 扫描程序。
s_readhs
{
set y [scan $x {%[^:]: %i %i %i %i}]
switch -nocase [string trim [lindex $y 0]] pga {
set a(hsbus) [lreplace $a(hsbus) 0 3 {*}[lrange $y 1 4]]
} mse {
set a(hsbus) [lreplace $a(hsbus) 4 7 {*}[lrange $y 1 4]]
} rms {
set a(hsbus) [lreplace $a(hsbus) 8 11 {*}[lrange $y 1 4]]
} lo {
set a(hsbus) [lreplace $a(hsbus) 12 12 {*}[lindex $y 1]]
}
if [string first { -- '} $x]>-1 {set s s_body}
}
此过程正在扫描此参数的值
Enabling High Speed Bus
PGA: 0x173 0x161 0x15a 0x165
MSE: 0x024 0x018 0x02a 0x028
RMS: 0x2107 0x1f97 0x2003 0x1fbc
LO : 0x01fd6 (167.178MHz)
PASS -- 'readhsbus'
有人可以帮我修改扫描asicgetmse值的程序吗?
HI MSE 0x017 (1.1%, -19.50dB)
HQ MSE 0x01a (1.3%, -18.96dB)
VI MSE 0x031 (2.4%, -16.21dB)
VQ MSE 0x027 (1.9%, -17.20dB)
PASS -- 'asicgetmse'
.plt
文件
HI% HIdB HQ% HQdB VI% VIdB VQ% VQdB
1.1 -19.5 1.3 -18.96 2.4 -16.21 1.9 -17.20
s_getmse
{
set y [scan $x {%[^:]: %i %i %i %i}]
switch -nocase [string trim [lindex $y 0]] Percentage {
set a(asicmse) [lreplace $a(asicmse) 0 3 {*}[lrange $y 1 4]]
} dB {
set a(asicmse) [lreplace $a(asicmse) 4 7 {*}[lrange $y 1 4]]
}
if [string first { -- '} $x]>-1 {set s s_body}
}
我不熟悉索引和数组。有人可以帮我吗?
s_getmse
{
set y [scan $x {%*s %*s %*s (%f%*s, %f%*s)}]
switch -nocase [string trim [lindex $y 0]] himse {
set a(asicmse) [lreplace $a(asicmse) 3 4 {*}[lrange $y 1 2]]
} hqmse {
set a(asicmse) [lreplace $a(asicmse) 8 9 {*}[lrange $y 1 2]]
} vimse {
set a(asicmse) [lreplace $a(asicmse) 13 14 {*}[lrange $y 1 2]]
} vqmse {
set a(asicmse) [lreplace $a(asicmse) 18 19 {*}[lrange $y 1 2]]
}
if [string first { -- '} $x]>-1 {set s s_body}
}
}
希望这可能有效。
现在我可以复制该值。
{HI MSE*} { set a(asicmse) [lreplace $a(asicmse) 0 0 [lindex $x 3]] }
{HQ MSE*} { set a(asicmse) [lreplace $a(asicmse) 1 1 [lindex $x 3]] }
{VI MSE*} { set a(asicmse) [lreplace $a(asicmse) 2 2 [lindex $x 3]] }
{VQ MSE*} { set a(asicmse) [lreplace $a(asicmse) 3 3 [lindex $x 3]] }
它复制了整个索引3 (1.1%,
答案 0 :(得分:1)
这对你有用吗?
SongListActivity.java
我相信您错过了SongDetailActivity.java
来扫描十六进制数字。
更正:我的意思是NavigationDrawerFragment.java
(是:set line "HI MSE 0x01b (1.3%, -18.80dB)"
scan $line "%s %s %x (%f%%, %fdB)" hi mse hex_number percent db
)。
答案 1 :(得分:0)
OP在编辑中写道:
行。完成后终于明白了。
s_getmse { set y [lindex $x 3] set v [string trim $y "(%,"] switch -nocase [lindex $x 0] { HI {set a(asicmse) [lreplace $a(asicmse) 0 0 $v]} HQ {set a(asicmse) [lreplace $a(asicmse) 1 1 $v]} VI {set a(asicmse) [lreplace $a(asicmse) 2 2 $v]} VQ {set a(asicmse) [lreplace $a(asicmse) 3 3 $v]} default {if [string first " -- " $x]>0 {set s s_body}}} set z [lindex $x 4] set w [string trim $z "dB)"] switch -nocase [lindex $x 0] { HI {set a(asicdb) [lreplace $a(asicdb) 0 0 $w]} HQ {set a(asicdb) [lreplace $a(asicdb) 1 1 $w]} VI {set a(asicdb) [lreplace $a(asicdb) 2 2 $w]} VQ {set a(asicdb) [lreplace $a(asicdb) 3 3 $w]} default {if [string first " -- " $x]>0 {set s s_body}}} }