无法读取串行输入

时间:2011-10-15 10:02:55

标签: c++ serial-port arduino

我有一个Arduino通过USB连接到我的电脑。从中我尝试从COM端口读取。

任何人都可以看到这是否有任何明显错误?

void main()
{   
    int exitStatus;
    unsigned int bytesToRead = 1;
    unsigned char *buffer = (unsigned char*) malloc(sizeof(unsigned char) + 1);
    Serial *connection = new Serial("COM3");

    if(connection->IsConnected()){
        exitStatus=connection->ReadData(buffer, bytesToRead);
        if( *buffer > 0)
            <statement I'm trying to hit>
    }

}    

现在它总是击中'我试图击中的声明',即使它不应该。调试它总是表明缓冲区的内容很多垃圾。我知道串口输入的内容应该是正确的,因为从我在串行监视器中看到的情况来看,它看起来都很好。

思想?

1 个答案:

答案 0 :(得分:3)

您没有评估exitStatus变量,这可能表明读取成功。

如果你只想读取一个字节,你也不需要malloc内存,只需将指针传递给一个本地char变量即可。

虽然我在这里,但主要的类型是int main()int main(int argc, char** argv)

int main()
{   
    int exitStatus;
    unsigned int bytesToRead = 1;
    unsigned char buffer;
    Serial *connection = new Serial("COM3");

    if(connection->IsConnected()){
        exitStatus=connection->ReadData(&buffer, 1);
        if((exitStatus == <Insert the value for a correct read status>) && (buffer != '0'))
            <statement I'm trying to hit>
    }
    return 0;
}

<强>更新 将!= 0检查更改为!='0',因为我怀疑串行接口有一个'0'字符(= 0x30)。