是否可以检查串口是空闲还是占用?

时间:2015-01-05 12:40:36

标签: c++ serial-port boost-asio

我正在使用boost asio库进行串口通信。

我为" COM3"窗口上的端口。它在端口" COM3"是免费的,但当其他应用程序已经占用" COM3"端口,此代码抛出异常。

在例外之后,申请将终止。

我想继续申请。所以,我的要求是:我可以检查端口" COM3"某些应用可以免费使用或占用吗?

代码是::

boost::asio::io_service io_service;
boost::asio::serial_port* port;

try{
    port = new boost::asio::serial_port(io_service, "COM3");
}
catch(boost::system::system_error& e)
{
    cout<<"Error: " << e.what()<<endl;
    cout<<"Info: "  << boost::diagnostic_information(e) <<endl;
    return 1;
}

2 个答案:

答案 0 :(得分:2)

“我可以检查端口”COM3“是否可以免费使用” - 是:如果正在呼叫

port = new boost::asio::serial_port(io_service, "COM3");

不会抛出您准备使用该端口的异常:

boost::asio::io_service io_service;
boost::asio::serial_port* port;

try{
    port = new boost::asio::serial_port(io_service, "COM3");
    // Port is now ready to be used by your application.
}
catch(boost::system::system_error& e)
{
    // Opening the port did not work, go on with error-handling
    cout<<"Error: " << e.what()<<endl;
    cout<<"Info: "  << boost::diagnostic_information(e) <<endl;
    // If you call return 1 from your main-function, the app will exit:
    return 1;
}

答案 1 :(得分:-2)

在此处找到我的问题的解决方案:https://gist.github.com/yoggy/3323808

如果我使用boost :: shared_ptr,它不会抛出异常,但会提供一些错误代码,我将能够继续我的应用程序。