我正在使用C#编写语音识别程序,并且编译了几行代码,当我说“电池电量”时,它们可以说出当前的电池电量。
if (e.Result.Text.ToLower() == "battery level")
{
System.Management.ManagementClass wmi = new System.Management.ManagementClass("Win32_Battery");
var allBatteries = wmi.GetInstances();
String estimatedChargeRemaining = String.Empty;
foreach (var battery in allBatteries)
{
estimatedChargeRemaining = Convert.ToString(battery["EstimatedChargeRemaining"]);
}
JARVIS.Speak("The Power Level Is At: " + estimatedChargeRemaining + "% sir");
return;
}
在此我想创建另一条 if
语句来提醒我,如果电池电量已降至25%以下。如何才能做到这一点?我猜会是类似“,if estimatedChargeRemaining < 25 then JARVIS.Speak("Warning, Battery level has dropped below 25%")
但我不太确定。
我不确定battery["EstimatedChargeRemaining"]
返回哪种格式,但是您似乎可以将其转换为int而不是字符串。
int batteryLevel = Convert.ToInt32(battery["EstimatedChargeRemaining"]);
if(batteryLevel < 25)
JARVIS.Speak("Warning, Battery level has dropped below 25%");
然后,您可以稍后使用该batteryLevel
变量
JARVIS.Speak("The Power Level Is At: " + batteryLevel.ToString() + "% sir");
不确定是否要这样做,但是foreach
循环意味着您只会得到中的最后一个值的电池信息allBatteries
。所有先前的值将被覆盖。
编辑评论(您应该添加错误处理)
if (e.Result.Text.ToLower() == "battery level")
{
System.Management.ManagementClass wmi = new System.Management.ManagementClass("Win32_Battery");
var allBatteries = wmi.GetInstances();
//String estimatedChargeRemaining = String.Empty;
int batteryLevel = 0;
foreach (var battery in allBatteries)
{
batteryLevel = Convert.ToInt32(battery["EstimatedChargeRemaining"]);
}
if(batteryLevel < 25)
JARVIS.Speak("Warning, Battery level has dropped below 25%");
else //Guessing you want else
JARVIS.Speak("The Power Level Is At: " + batteryLevel.ToString() + "% sir");
return;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句