我正在开发一个窗口应用程序,通过串口向Arduino发送和接收数据。从串口发送和接收int值
我遇到的问题是当我尝试发送一个int值到串口并在Arduino程序中提取它。我在窗口的程序中使用WriteFile()
发送int,并使用Serial.parseInt()
在Arduino中进行拾取。当我发送char值时,我可以毫无问题地提取它们。
如果我想发送int值,那么我只能在arduino中收到一个整数,如果我发送的整数48到57给出的int值是0到9,它们是小数48到57的ASCII字符,奇怪的。例如57,Arduino的似乎挑这个向上为9为ASCII 57.
下面炭值在窗口程序和阿尔杜伊诺
C++代码的代码:
DWORD ComPort::WriteAnalogData(int *buffer)
{
if (!connected)
return 0;
DWORD bytesSent;
DWORD errors;
if (!WriteFile(hCom, (void *)buffer, sizeof(buffer), &bytesSent, 0))
ClearCommError(hCom, &errors, NULL); // If it fails, clear com errors
else return bytesSent; // Return the number of bytes sent
return 0; // Or return 0 on failure
}
的int写入后的返回值(bytesSent)是4,所以我认为这个函数正在工作。我有一个类似的功能来发送这些数据运作的单字节和Arduino的挑选数据高达OK
的Arduino代码:
int scadaAnalogVal;
scadaAnalogVal = Serial.parseInt();
digitalWrite(scadaAnalogVal,HIGH);
谁能告诉我这是怎么回事。可能有些简单但我不明白问题是什么,谢谢。
试过,仍然得到了同样的问题 –
不知道还有什么,而不用复制整个实验建议。我的回答值得赞赏,但是(不是接受),因为它至少纠正了返回值的类型。 ;)当使用不同的处理器架构时,这很重要。 – TomServo