如何从C ++程序向Arduino发送串行信息

时间:2019-05-22 17:22:53

标签: c++ arduino serial-port communication

在工作中,我正在构建一个GUI以控制多个电机。电机由连接到我的PC的Arduino mega 2560控制。我可以连接到端口,但是在传输数据时出现问题。如果我将任何东西发送到Arduino所在的COM端口,程序都会崩溃。我可以发送和接收信息。

请注意,整个程序都是围绕boost库构建的,为了程序的方便性和完整性,我想继续使用boost库。

我建立了一个虚拟串行网桥,并且可以在TeraTerm控制台中看到预期的输出。使用TeraTerm,我可以将相同的输出发送到Arduino,并且可以正常工作。这意味着我能够正确地将数据发送到串行端口,并且可以正确地从串行端口接收数据。问题似乎仅与Arduino和程序之间的连接无关。

创建串行通讯。

boost::shared_ptr<Buffered_async_serial> _serial_port;
_serial_port.reset(new Buffered_async_serial("COM4", 115200));
_is_alive = _serial_port->Is_open();

我认为发生错误的地方。 (这是我向Arduino发送数据的地方)

// Checking to make sure serial port is open.
if (!_serial_port->Is_open())
{
    return false;
}

std::string fullString = "G";   // G stands for motor Goals movement.

_serial_port->Write_string(fullString);

我得到的错误是。我不知道我要得到什么异常,我也不知道为什么我也要得到这个错误。有人在这里有经验吗?

Cath_Controller.exe中0x747ECB92处未处理的异常:Microsoft C ++异常:内存位置0x00CFE8BC处的boost :: system :: system_error。

0 个答案:

没有答案