繁体   English   中英

向/从串口发送和接收int值

[英]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);

谁能告诉我发生了什么事。 可能很简单,但是我看不出问题是什么,谢谢。

Arduino parseInt()方法在Arduino体系结构中具有返回类型(32位)。 我认为您应该将Arduino代码更改为:

long scadaAnalogVal;

ParseInt文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM