[英]Sending and receiving int value to/from serial port
我正在开发一个窗口的应用程序,该应用程序通过串行端口向Arduino发送和接收数据。
我遇到的问题是当我尝试将int值发送到串行端口并在Arduino程序中将其提取时。 我正在窗口程序中使用WriteFile()
发送int并使用Serial.parseInt()
在Arduino Serial.parseInt()
。 当我发送char值时,我可以毫无问题地拾取它们。
如果我只想在arduino中接收一个整数,则要发送int值,如果我发送的整数48至57,则给我一个0至9的int值,它们是十进制48至57的ASCII字符,这很奇怪。 例如57,Arduino似乎将其取为9,这是ASCII 57的char值。
下面是Windows程序和Arduino中的代码
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可以将数据拾取好
Arduino代码:
int scadaAnalogVal;
scadaAnalogVal = Serial.parseInt();
digitalWrite(scadaAnalogVal,HIGH);
谁能告诉我发生了什么事。 可能很简单,但是我看不出问题是什么,谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.