我该如何解决这个错误? (arduino铸造)

时间:2017-01-08 20:04:39

标签: c++ arduino

我正在使用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 *'和   '字符串')

库手册但是说返回值是一个字符串,所以我不明白为什么这不起作用:(

有人可以帮我解决这个问题或告诉我可能出现的问题吗?

谢谢!

2 个答案:

答案 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;
  }
}