下面的代码是我用来从Arduino发送和接收信息的代码。我的问题是Arduino首次插入时。由于该命令没有返回任何内容(因为还没有任何内容),因此挂起了读取操作,因此整个程序崩溃了。如何将超时添加到读取函数(arduino->ReadLine();)中,从而导致此问题?这样一秒钟会继续吗?

#include "stdafx.h"
#include <iostream>

using namespace System;
using namespace System::IO::Ports;

int main(int argc, char* argv[])
{
    using namespace std;

    String^ portName;
    int baudRate=9600;

    portName="COM4";
    // Arduino settings.
    SerialPort^ arduino;

    arduino = gcnew SerialPort(portName, baudRate);
    // Open port.
    try
    {
        arduino->Open();
        {
            if (strcmp(argv[1],"-send")==0) {
                String^ command = gcnew String(reinterpret_cast<const char*>(argv[2]));
                if (String::Compare(command,"int6")==0) {
                    arduino->Write("^");
                }
                else
                    arduino->Write(command);
            }
            if(strcmp(argv[1],"-get")==0) {
                String^ command = gcnew String(reinterpret_cast<const char*>(argv[2]));
                arduino->WriteLine(command);
                String^ result = arduino->ReadLine();
                Console::Write(result);
            }
        }

最佳答案

设置arduino->ReadTimeout = duration_in_ms,然后捕获TimeoutException

关于c++ - 带有Arduino的C++中的串行通信超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5723949/

10-13 09:46