デバッグ目的で実行している間、コンピューターにすべてのロボットのデータを保持する必要があるロボットのコーディングを行っています。この責任を持つ debug provider という名前のクラスを作成しました。これが私がこのクラスのために書いたコードです:
void
DebugProvider::doWork()
{
boost::asio::io_service io_service;
tcp::endpoint endpoint(tcp::v4(), 10001);
tcp::acceptor acceptor(io_service, endpoint);
tcp::iostream stream;
boost::system::error_code error;
acceptor.accept(*stream.rdbuf(), error);
if(!error)
{
boost::archive::binary_oarchive oa(stream);
oa << dataProvider;
}
usleep(50);
}
doWork メソッドは boost::thread で 50us ごとに呼び出され、DataProvider にはロボットのすべてのデータ (カメラ画像、関節位置など) が含まれます。
また、ロボットからデータを取得し、ラップトップにカメラ画像を表示する単純なクライアントも作成しました。(コードをテストしているので、データを一度取得します)。
int main(int argc, char *argv[])
{
DataProvider dp;
tcp::iostream stream("10.1.1.1", "10001");
boost::archive::binary_iarchive ia(stream);
ia >> dp;
Mat mat = dp.getCameraImage();
imshow("camera", mat);
waitKey();
return 0;
}
私の問題は、ロボットとコンピューターの両方でプログラムを実行した後です。どちらのプログラムも stream_error をスローします。
サーバーからデータを取得するためにtelnetを試してみましたが、すべて正常に動作しますが、boost::asio::ip::tcpを使用すると、説明されているエラーがスローされます。