我正在使用rinkydinkelectronics的DS3231库 链接:http://www.rinkydinkelectronics.com/library.php?id=73(点击手册)
我正在尝试运行以下代码
Questionnaire q = new Questionnaire();
bool? result = q.ShowDialog();
if(result.HasValue && result.Value)
{
//button was clicked
var color = q.comboBox1.SelectedIndex;
switch (color)
...
}
但是我收到以下错误:
退出状态1不匹配'operator =='(操作数类型为'char *'和 '字符串')
库手册但是说返回值是一个字符串,所以我不明白为什么这不起作用:(
有人可以帮我解决这个问题或告诉我可能出现的问题吗?
谢谢!
答案 0 :(得分:2)
如果理解你的代码是正确的,你想检查两个字符串是否相等。由于Arduino IDE中没有标准库,因此您必须选择其他方式。将C字符串(char*
)转换为String
object。
示例:
if(String(rtc.getTimerStr()) == alarmTime) {
....
}
这应该有用。
答案 1 :(得分:1)
你试图用容易相似的名字比较两个不同的东西。 string(C样式字符串)是一个以null结尾的char数组。这与String object不同。人们普遍认为,对于内存有限的硬件,例如标准的Arduino板,如果可能的话,应该避免使用String类,因为它使用更多内存并可能导致动态内存分配造成内存碎片。使用字符串要好得多,实际上与String一样容易使用。
您的代码仅使用字符串:
char alarmTime[] = "08:52:00";
void loop() {
if (strcmp(rtc.getTimeStr(), alarmTime) == 0) {
alarmState = true;
}
}