以下代码是我用来发送和接收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);
}
}
答案 0 :(得分:2)
设置arduino->ReadTimeout = duration_in_ms
,然后抓住TimeoutException
。
答案 1 :(得分:0)
除了超时,您的代码应该循环,直到SerialPort的BytesToRead
属性大于零
while (arduino->BytesToRead==0) {}
如果在预期的时间范围内没有从arduino收到任何内容,您可以跟踪您使用用户消息循环和退出多长时间。