48 lines
1.4 KiB
C++
48 lines
1.4 KiB
C++
#include "System.h"
|
||
|
||
SystemConfig SystemCall;
|
||
// 在线程池中执行文件操作
|
||
static asio::thread_pool pool(2); // 线程专门处理文件I/O
|
||
|
||
void SystemCallInit(void)
|
||
{
|
||
SystemCall.ProductInfo = 0xFF;
|
||
SystemCall.logEn = ENABLE;
|
||
SystemCall.CanOpenStatus[0] = DISABLE;
|
||
SystemCall.CanOpenStatus[1] = DISABLE;
|
||
}
|
||
|
||
void logAdd(const std::string& filename, const std::string& content) {
|
||
asio::post(pool, [filename, content]() {
|
||
std::ofstream file;
|
||
|
||
try {
|
||
// 以追加模式打开文件
|
||
file.open(filename, std::ios::app | std::ios::out);
|
||
if (!file.is_open()) {
|
||
throw std::runtime_error("Cannot open file: " + filename);
|
||
}
|
||
|
||
// 写入内容(追加换行符)
|
||
file << content << std::endl;
|
||
|
||
if (file.fail()) {
|
||
throw std::runtime_error("Write failed");
|
||
}
|
||
|
||
std::cout << "Successfully appended to file: " << filename << std::endl;
|
||
}
|
||
catch (const std::exception& e) {
|
||
std::cerr << "Error: " << e.what() << std::endl;
|
||
}
|
||
});
|
||
|
||
// 注意:pool会在作用域结束时join
|
||
// 如果需要保持运行,可以将pool作为成员变量
|
||
}
|
||
|
||
// 模拟 FreeRTOS 的延时
|
||
void vTaskDelay(TickType_t ms)
|
||
{
|
||
std::this_thread::sleep_for(std::chrono::milliseconds(ms));
|
||
} |