@@ -31,6 +31,8 @@ int main(List<String> arguments) {
31
31
//获取体质抽奖结果
32
32
var lotteryParser = ArgParser ();
33
33
parser.addCommand ('lottery' , lotteryParser);
34
+ lotteryParser.addFlag ('list' , abbr: 'l' , negatable: false , help: '列出所有结果' );
35
+ lotteryParser.addFlag ('legacy' , negatable: false , help: '使用旧版方式获取体质抽奖结果' );
34
36
lotteryParser.addFlag ('help' , abbr: 'h' , negatable: false , help: '获取帮助' );
35
37
36
38
//读取输入电压
@@ -100,22 +102,68 @@ ${parser.usage}
100
102
print (lotteryParser.usage);
101
103
return 0 ;
102
104
}
103
- var frequencies = getFreqBigClustersMHz ();
104
- if (frequencies == null ) {
105
- print ("获取cpu频率失败" );
106
- return 1 ;
107
- }
108
105
const Map <CpuLotteryResult , String > lotteryMap = {
109
106
CpuLotteryResult .level1: "一等奖" ,
110
107
CpuLotteryResult .level2: "二等奖" ,
111
108
CpuLotteryResult .level3: "三等奖" ,
112
109
CpuLotteryResult .levelWorst: "参与奖" ,
113
110
};
114
- var result0 = getCpuLotteryResult (frequencies[0 ]);
115
- var result1 = getCpuLotteryResult (frequencies[1 ]);
116
111
117
- print ("第一组大核频率: ${frequencies [0 ]}MHz, 抽奖结果: ${lotteryMap [result0 ]}" );
118
- print ("第二组大核频率: ${frequencies [1 ]}MHz, 抽奖结果: ${lotteryMap [result1 ]}" );
112
+ if (results.command! ['list' ]) {
113
+ print ("所有体质抽奖结果:" );
114
+ if (results.command! ['legacy' ]) {
115
+ freq2LevelMap.forEach ((key, value) {
116
+ print ("频率近似值: $key , 结果: ${lotteryMap [value ]}" );
117
+ });
118
+ } else {
119
+ var lastValue = - 1 ;
120
+ var lastResult = CpuLotteryResult .levelWorst;
121
+ pvtm2LevelMap.forEach ((key, value) {
122
+ if (lastValue != - 1 ) {
123
+ print (
124
+ "PVTM值: $lastValue - ${key - 1 }, 结果: ${lotteryMap [lastResult ]}" );
125
+ }
126
+ lastValue = key;
127
+ lastResult = value;
128
+ });
129
+ }
130
+ return 0 ;
131
+ }
132
+
133
+ if (results.command! ['legacy' ]) {
134
+ var frequencies = getFreqBigClustersMHz ();
135
+ if (frequencies == null ) {
136
+ print ("获取cpu频率失败" );
137
+ return 1 ;
138
+ }
139
+
140
+ var result0 = getCpuLotteryResult (frequencies[0 ]);
141
+ var result1 = getCpuLotteryResult (frequencies[1 ]);
142
+
143
+ print ("第一组大核频率: ${frequencies [0 ]}MHz, 抽奖结果: ${lotteryMap [result0 ]}" );
144
+ print ("第二组大核频率: ${frequencies [1 ]}MHz, 抽奖结果: ${lotteryMap [result1 ]}" );
145
+ print ("抽奖结果受温度影响, 可以在不同温度下多次测试以获得更准确的结果" );
146
+ print ("使用 --list 参数以列出所有可能结果" );
147
+ } else {
148
+ try {
149
+ var pvtmValues = getPvtmBigClusters ();
150
+ if (pvtmValues == null ) {
151
+ print ("获取pvtm失败" );
152
+ return 1 ;
153
+ }
154
+
155
+ var result0 = getPvtmCpuLotteryResult (pvtmValues[0 ]);
156
+ var result1 = getPvtmCpuLotteryResult (pvtmValues[1 ]);
157
+
158
+ print ("第一组大核pvtm值: ${pvtmValues [0 ]}, 抽奖结果: ${lotteryMap [result0 ]}" );
159
+ print ("第二组大核pvtm值: ${pvtmValues [1 ]}, 抽奖结果: ${lotteryMap [result1 ]}" );
160
+ print ("抽奖结果受温度影响, 可以在不同温度下多次测试以获得更准确的结果" );
161
+ print ("使用 --list 参数以列出所有可能结果" );
162
+ } catch (e) {
163
+ print ("体质抽奖失败: $e " );
164
+ }
165
+ }
166
+
119
167
break ;
120
168
case 'input_voltage' :
121
169
if (results.command! ['help' ]) {
0 commit comments