同步操作将从 bms/libcontrolcan2 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
多路 CAN <--> TCP/IP 转发器:can_agent + libControlCan.so/libControlCan.dll。使用 Boost.Asio 实现跨平台支持:
CAN 设备接收数据可通过 Socket 转发给多个客户端(主要实现Receive);同时 Socket 客户端可以通过 Transmit 发送消息到 CAN 设备。
Socket客户端依赖 libControlCan.so/libControlCan.dll 实现通讯,且可以使用 libControlCan.dll 替换周立功 can_test 中的同名dll,使得周立功 can_test 转为通过 can_agent 访问 USBCAN设备。
底层支持的CAN设备:
代码结构:
|
|-- include : libControlCAN API头文件,高性能bytes/text转换
|-- libControlCAN : CAN <--> Socket 透传实现lib
|-- can_agent : Socket agent 服务
|-- test : Boost.Asio TCP/UDP, eventpp, zmq, CAN收发, CAN/Socket透传测试及demo
|-- asio_example : Boost.Asio 学习测试代码
使用 eventpp(MCMP)实现数据分发,性能测试结果pdf:can_agent performance
# 3rd/glog-0.6.0/CMakeLists.txt
set(BUILD_TESTING OFF)
set(glog ${glog} PARENT_SCOPE)
configure_file (src/glog/logging.h.in glog/logging.h @ONLY) # 在该语句后面添加如下两条
configure_file (src/glog/log_severity.h glog/log_severity.h @ONLY)
configure_file (src/glog/platform.h glog/platform.h @ONLY)
set(GLOG_PUBLIC_H
# ...
) # 在该语句下面添加一条语句
set(GLOG_INC_DIR "${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE)
# 注释掉如下语句
# set(CMAKE_DEBUG_POSTFIX d)
在根CMakeLists.txt中添加:
include_directories(${GLOG_INC_DIR})
./boostrap.sh
./b2 -layout=versioned variant=release cxxflags='-fPIC -std=c++17' runtime-link=static link=static threading=multi
sudo ./b2 install
# 删除系统安装的boost
sudo apt-get --purge remove libboost-dev
sudo apt-get --purge remove libboost-all-dev
cmake .. -G "Visual Studio 17 2022" -A Win32 -DCMAKE_BUILD_TYPE="Release" -DBUILD_SHARED_LIBS="ON" -DCMAKE_INSTALL_BINDIR="bin" -DCMAKE_INSTALL_SBINDIR="bin" -DCMAKE_INSTALL_LIBEXECDIR="bin" -DCMAKE_INSTALL_LIBDIR="lib" -DCMAKE_INSTALL_INCLUDEDIR="include" -DCMAKE_INSTALL_DATAROOTDIR="share" -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY="ON" -DWITH_THREADS="True" -DWITH_SYMBOLIZE="True" -DWITH_UNWIND="True" -DBUILD_TESTING="False"
cmake -G "Visual Studio 17 2022" -A Win32 -S ./ -B "build32"
# cmake --build build32 --config Release --clean-first -j
cmake --build build32 --config Release -j
find . -regex '.*\.\(cc\|cpp\|hpp\|cu\|c\|h\)' -exec clang-format -style=file -i {} \;
代码检查:Extra Clang Tools 16.0.0git documentation
python run-clang-tidy.py -p ./build -config-file .clang-tidy -quiet
在代码中,使用NOLINT等(以及带参数的版本)标注禁用静态检查。
// NOLINT
// NOLINTNEXTLINE
// NOLINTBEGIN
// NOLINTEND
#include <type_traits>
#include <iostream>
/* https://ideone.com/469YTq */
template<typename T>
void use_impl(const T&, std::false_type) {
std::cout << "use_impl(false)" << std::endl;
}
template<typename T>
void use_impl(const T&, std::true_type) {
std::cout << "use_impl(true)" << std::endl;
}
template<typename T>
void use(const T& v) {
use_impl(v, typename std::is_integral<T>::type());
}
int main() {
use(1);
use(1.2);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。