uss filter

This commit is contained in:
lyq 2026-05-06 15:10:03 +08:00
parent d56fd743e6
commit 5ec44173c6

View File

@ -2,7 +2,7 @@
#include <iostream> #include <iostream>
// 超声波传感器的CAN ID定义 (J1939格式: 0x18EC5700) // 超声波传感器的CAN ID定义 (J1939格式: 0x18EC5700) 18EC0057
// Priority: 0x18, PGN: 0xEC00 (60416), Device ID: 0x57 (87) // Priority: 0x18, PGN: 0xEC00 (60416), Device ID: 0x57 (87)
constexpr uint32_t USS_CAN_ID = 0x18EC0057; constexpr uint32_t USS_CAN_ID = 0x18EC0057;
constexpr uint32_t USS_CAN_MASK = 0xFFFFFFFF; // 精确匹配 constexpr uint32_t USS_CAN_MASK = 0xFFFFFFFF; // 精确匹配
@ -39,18 +39,18 @@ bool UssDriver::init(const std::string& can_interface)
} }
// 设置CAN过滤器只接收超声波的CAN数据 // 设置CAN过滤器只接收超声波的CAN数据
struct can_filter filter; // struct can_filter filter;
filter.can_id = USS_CAN_ID | CAN_EFF_FLAG; // filter.can_id = USS_CAN_ID | CAN_EFF_FLAG;
filter.can_mask = USS_CAN_MASK; // filter.can_mask = USS_CAN_MASK;
std::vector<struct can_filter> filters; // std::vector<struct can_filter> filters;
filters.push_back(filter); // filters.push_back(filter);
if (!can_driver_.setFilter(filters)) // if (!can_driver_.setFilter(filters))
{ // {
std::cerr << "Failed to set CAN filter for USS" << std::endl; // std::cerr << "Failed to set CAN filter for USS" << std::endl;
can_driver_.close(); // can_driver_.close();
return false; // return false;
} // }
can_driver_.setReceiveCallback(canReceiveCallback, this); can_driver_.setReceiveCallback(canReceiveCallback, this);
initialized_ = true; initialized_ = true;
@ -58,7 +58,7 @@ bool UssDriver::init(const std::string& can_interface)
if (print_debug_) if (print_debug_)
{ {
std::cout << "USS driver initialized successfully on " << can_interface << std::endl; std::cout << "USS driver initialized successfully on " << can_interface << std::endl;
std::cout << "CAN filter set for ID: 0x" << std::hex << USS_CAN_ID << std::dec << std::endl; // std::cout << "CAN filter set for ID: 0x" << std::hex << USS_CAN_ID << std::dec << std::endl;
} }
return true; return true;