字符参数方法Arduino代码出错

字符参数方法Arduino代码出错,arduino,Arduino,当我试图运行代码时,我不断收到以下错误消息。我不知道如何纠正这些错误,以便我可以测试一切。尽管这些只是警告信息,代码说它会上传。我的串行监视器上没有收到打印任何语句的任何消息 代码: 不能通过执行char(buttonState)将变量强制转换为char。在C语言中,您可以按如下方式进行转换:(char)buttonState我的代码中有一些小错误(例如循环语法不正确),导致我出现运行时错误 char和char*非常不同 const char*可能会稍微复杂一些,但首先必须了解文本和字符之间的差

当我试图运行代码时,我不断收到以下错误消息。我不知道如何纠正这些错误,以便我可以测试一切。尽管这些只是警告信息,代码说它会上传。我的串行监视器上没有收到打印任何语句的任何消息

代码:


不能通过执行
char(buttonState)
将变量强制转换为char。在C语言中,您可以按如下方式进行转换:
(char)buttonState

我的代码中有一些小错误(例如循环语法不正确),导致我出现运行时错误

char
char*
非常不同

const char*
可能会稍微复杂一些,但首先必须了解文本和字符之间的差异

“Hello World”是一个文本,通常被视为指针或[const]数组

“A”是一个字符,在内部以与数字65相同的方式存储在类型为
char
的变量中

更多:

C++(或java)和C++也有很大的不同。“c++是为受虐狂准备的”这句话有很多道理:

你的第一个问题

警告:从“char”到“char*”的转换无效

字符*状态=字符(按钮状态)

来自以下几行:

bool buttonState = digitalRead(guessPin);  
char *state = char(buttonState);
logger(state);
logger(const char*)
需要一个文本来记录,但您有一个bool。我不知道你是怎么用c#写的,选角也没用。你最终可能会想要像这样的东西

bool buttonState = digitalRead(guessPin);  
logger(buttonState? "guessPin is set": "guessPin is LOW");

你在这张素描中肯定错了很多。写一些小的测试草图来尝试简单的事情。这实际上不是错误。至少你发布的信息只是警告和注释。但是,请仔细检查它们-有些可能表明您的代码无法按预期工作,或者程序将在运行时崩溃。我以前有一个草图,工作完全正常,但我在一开始声明的数组中使用了所有“字符串”数据类型。我需要节省内存,所以我正在尝试转换为“Char”。我的代码中的所有东西以前都工作过then@Alfageme谢谢你的评论。你是说我可能有运行时问题?我认为这是有道理的,因为代码确实说它最终成功地上传到了arduino。所以这可能会导致我的串行输出无法正常工作?来自c#…我有时觉得Arduino有点挑战性@我完全同意!所有底层的东西,比如指针和引用,都会在幕后得到处理。在搞乱了一些事情之后,我相信我搞乱了这里的几个“FOR”循环,最后尝试向char数组写入比我指定的更多的数据。。。结果是向LCD屏幕发送了一个非常奇怪的字节数组,然后更改了地址,使它们无法相互通信。长话短说,我应该坚持使用C#以减少麻烦,而且我使用的“getCharSize”函数是错误的,我需要使用“strlen()”,无论出于什么原因,9600波特干扰了我的LCD输出,当我移动到115200时工作正常。如果串行速度很重要,那么还有其他问题。关于你对C的评论,我在我的回答中添加了一点。我惊讶地发现现在C++中允许了函数语法char(ButoStand)和ARDUNO的C++编译器。参见“功能性演员阵容”
bool buttonState = digitalRead(guessPin);  
char *state = char(buttonState);
logger(state);
bool buttonState = digitalRead(guessPin);  
logger(buttonState? "guessPin is set": "guessPin is LOW");