GrpcTransfer.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. #include "GrpcTransfer.h"
  2. void MessageServiceClient::R360SendMessage(DataPackagePtr pkg)
  3. {
  4. ClientContext context;
  5. Empty response;
  6. std::unique_ptr<grpc::ClientWriter<DataList>> writer(
  7. stub_->R360SendMessage(&context, &response));
  8. DataList dataList;
  9. EmbeddedData *embeddedData = dataList.add_data();
  10. embeddedData->set_usb_camera_index(pkg->nCameraID);
  11. // 填充图片数据(示例中使用字符串模拟)
  12. std::string tempImageData(pkg->pJpegData, pkg->nJpegSize);
  13. embeddedData->set_image(tempImageData);
  14. embeddedData->set_degree(pkg->dDegree);
  15. for (int i = 0; i < pkg->Result.count; ++i)
  16. {
  17. // 添加报警信息
  18. Alarm *alarm = embeddedData->add_alarm();
  19. alarm->set_x(pkg->Result.results[i].box.left);
  20. alarm->set_y(pkg->Result.results[i].box.top);
  21. alarm->set_w(pkg->Result.results[i].box.right - pkg->Result.results[i].box.left);
  22. alarm->set_h(pkg->Result.results[i].box.bottom - pkg->Result.results[i].box.top);
  23. alarm->set_score(pkg->Result.results[i].prop);
  24. alarm->set_type(R360::AlarmType(pkg->Result.results[i].cls_id)); // 使用枚举值
  25. }
  26. if (!writer->Write(dataList))
  27. {
  28. std::cerr << "写入消息失败" << std::endl;
  29. }
  30. }