我正在使用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;
}
答案 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,它不会抛出异常,但会提供一些错误代码,我将能够继续我的应用程序。