finish dz function
This commit is contained in:
@@ -409,49 +409,203 @@ extern bool normalOutputEnabled;
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////测试shell用的函数
|
||||
|
||||
void Worker::printLedgerinshell(const terminal_dev& dev, int fd) {
|
||||
// —— 显示控制:最多打印的元素数量(防止过长)——
|
||||
constexpr size_t MAX_ITEMS = 5; // 可按需调整或删除限制
|
||||
|
||||
std::ostringstream os;
|
||||
os << "\r\x1B[K------------------------------------\n";
|
||||
os << "\r\x1B[K|-- terminal_id: " << dev.terminal_id << "\n";
|
||||
os << "\r\x1B[K|-- terminal_name: " << dev.terminal_name << "\n";
|
||||
os << "\r\x1B[K|-- dev_ip: " << dev.addr_str << "\n";
|
||||
os << "\r\x1B[K|-- dev_port: " << dev.port << "\n";
|
||||
os << "\r\x1B[K|-- dev_type: " << dev.dev_type << "\n";
|
||||
os << "\r\x1B[K|-- dev_key: " << dev.dev_key << "\n";
|
||||
os << "\r\x1B[K|-- dev_series: " << dev.dev_series << "\n";
|
||||
os << "\r\x1B[K|-- dev_processNo: " << dev.processNo << "\n";
|
||||
os << "\r\x1B[K|-- maxProcessNum: " << dev.maxProcessNum << "\n";
|
||||
os << "\r\x1B[K|-- org_name: " << dev.org_name << "\n";
|
||||
os << "\r\x1B[K|-- maint_name: " << dev.maint_name << "\n";
|
||||
os << "\r\x1B[K|-- station_name: " << dev.station_name << "\n";
|
||||
os << "\r\x1B[K|-- tmnl_factory: " << dev.tmnl_factory << "\n";
|
||||
os << "\r\x1B[K|-- tmnl_status: " << dev.tmnl_status << "\n";
|
||||
os << "\r\x1B[K|-- timestamp: " << dev.timestamp << "\n";
|
||||
os << "\r\x1B[K|-- terminal_id : " << dev.terminal_id << "\n";
|
||||
os << "\r\x1B[K|-- terminal_name : " << dev.terminal_name << "\n";
|
||||
os << "\r\x1B[K|-- dev_ip : " << dev.addr_str << "\n";
|
||||
os << "\r\x1B[K|-- dev_port : " << dev.port << "\n";
|
||||
os << "\r\x1B[K|-- dev_type : " << dev.dev_type << "\n";
|
||||
os << "\r\x1B[K|-- dev_key : " << dev.dev_key << "\n";
|
||||
os << "\r\x1B[K|-- dev_series : " << dev.dev_series << "\n";
|
||||
os << "\r\x1B[K|-- dev_processNo : " << dev.processNo << "\n";
|
||||
os << "\r\x1B[K|-- maxProcessNum : " << dev.maxProcessNum << "\n";
|
||||
os << "\r\x1B[K|-- org_name : " << dev.org_name << "\n";
|
||||
os << "\r\x1B[K|-- maint_name : " << dev.maint_name << "\n";
|
||||
os << "\r\x1B[K|-- station_name : " << dev.station_name << "\n";
|
||||
os << "\r\x1B[K|-- tmnl_factory : " << dev.tmnl_factory << "\n";
|
||||
os << "\r\x1B[K|-- tmnl_status : " << dev.tmnl_status << "\n";
|
||||
os << "\r\x1B[K|-- timestamp : " << dev.timestamp << "\n";
|
||||
os << "\r\x1B[K|-- mac : " << dev.mac << "\n";
|
||||
|
||||
os << "\r\x1B[K|-- mac: " << dev.mac << "\n";
|
||||
// ========================= 终端级 · 内部定值 =========================
|
||||
// internal_values(ushort 列表)与 dz_internal_info_list 一一对应,仅展示前 MAX_ITEMS 条
|
||||
os << "\r\x1B[K|-- Internal Values (" << dev.internal_values.size() << "):\n";
|
||||
{
|
||||
size_t idx = 0;
|
||||
for (auto itv = dev.internal_values.begin();
|
||||
itv != dev.internal_values.end() && idx < MAX_ITEMS;
|
||||
++itv, ++idx) {
|
||||
os << "\r\x1B[K |-- [" << idx << "] value: " << static_cast<unsigned>(*itv) << "\n";
|
||||
}
|
||||
if (dev.internal_values.size() > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (dev.internal_values.size() - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// dz_internal_info_list(NameFixValue 描述,和 internal_values 对应)
|
||||
os << "\r\x1B[K|-- Internal Value Descriptions (" << dev.dz_internal_info_list.size() << "):\n";
|
||||
{
|
||||
const size_t n = dev.dz_internal_info_list.size();
|
||||
for (size_t i = 0; i < n && i < MAX_ITEMS; ++i) {
|
||||
const auto& nf = dev.dz_internal_info_list[i];
|
||||
os << "\r\x1B[K |-- [" << i << "] "
|
||||
<< "Name=" << trim_cstr(nf.sFixValueName, sizeof(nf.sFixValueName))
|
||||
<< ", Type=" << nf.DataType
|
||||
<< ", Unit=" << trim_cstr(nf.sDimension, sizeof(nf.sDimension))
|
||||
<< ", Min=" << nf.MinValue
|
||||
<< ", Max=" << nf.MaxValue
|
||||
<< ", Default=" << nf.DefaultValue
|
||||
<< "\n";
|
||||
}
|
||||
if (n > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (n - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// control_words(控制字描述)
|
||||
os << "\r\x1B[K|-- Control Words (" << dev.control_words.size() << "):\n";
|
||||
{
|
||||
const size_t n = dev.control_words.size();
|
||||
for (size_t i = 0; i < n && i < MAX_ITEMS; ++i) {
|
||||
const DZ_kzz_bit& b = dev.control_words[i];
|
||||
os << "\r\x1B[K |-- [" << i << "] "
|
||||
<< "name=\"" << trim_cstr(b.kzz_bit, sizeof(b.kzz_bit)) << "\""
|
||||
<< ", enable=" << static_cast<int>(b.bit_enable) << "\n";
|
||||
}
|
||||
if (n > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (n - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// ========================= 监测点级 · line =========================
|
||||
for (size_t i = 0; i < dev.line.size(); ++i) {
|
||||
const auto& ld = dev.line[i];
|
||||
if (ld.monitor_id.empty()) continue;
|
||||
|
||||
os << "\r\x1B[K|-- line[" << i << "]:\n";
|
||||
os << "\r\x1B[K |-- monitor_id: " << ld.monitor_id << "\n";
|
||||
os << "\r\x1B[K |-- monitor_name: " << ld.monitor_name << "\n";
|
||||
os << "\r\x1B[K |-- logical_device_seq: " << ld.logical_device_seq << "\n";
|
||||
os << "\r\x1B[K |-- terminal_id: " << ld.terminal_id << "\n";
|
||||
os << "\r\x1B[K |-- voltage_level: " << ld.voltage_level << "\n";
|
||||
os << "\r\x1B[K |-- terminal_connect: " << ld.terminal_connect << "\n";
|
||||
os << "\r\x1B[K |-- status: " << ld.status << "\n";
|
||||
os << "\r\x1B[K |-- timestamp: " << ld.timestamp << "\n";
|
||||
os << "\r\x1B[K |-- monitor_id : " << ld.monitor_id << "\n";
|
||||
os << "\r\x1B[K |-- monitor_name : " << ld.monitor_name << "\n";
|
||||
os << "\r\x1B[K |-- logical_device_seq : " << ld.logical_device_seq << "\n";
|
||||
os << "\r\x1B[K |-- terminal_id : " << ld.terminal_id << "\n";
|
||||
os << "\r\x1B[K |-- voltage_level : " << ld.voltage_level << "\n";
|
||||
os << "\r\x1B[K |-- terminal_connect : " << ld.terminal_connect << "\n";
|
||||
os << "\r\x1B[K |-- status : " << ld.status << "\n";
|
||||
os << "\r\x1B[K |-- timestamp : " << ld.timestamp << "\n";
|
||||
os << "\r\x1B[K |-- CT1=" << ld.CT1 << ", CT2=" << ld.CT2
|
||||
<< ", PT1=" << ld.PT1 << ", PT2=" << ld.PT2 << "\n";
|
||||
|
||||
os << "\r\x1B[K |-- CT1: " << ld.CT1 << "\n";
|
||||
os << "\r\x1B[K |-- CT2: " << ld.CT2 << "\n";
|
||||
os << "\r\x1B[K |-- PT1: " << ld.PT1 << "\n";
|
||||
os << "\r\x1B[K |-- PT2: " << ld.PT2 << "\n";
|
||||
// --- 监测点 · 定值(set_values) ---
|
||||
os << "\r\x1B[K |-- Set Values (" << ld.set_values.size() << "):\n";
|
||||
{
|
||||
size_t idx = 0;
|
||||
for (auto it = ld.set_values.begin();
|
||||
it != ld.set_values.end() && idx < MAX_ITEMS;
|
||||
++it, ++idx) {
|
||||
os << "\r\x1B[K |-- [" << idx << "] " << *it << "\n";
|
||||
}
|
||||
if (ld.set_values.size() > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (ld.set_values.size() - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// --- 监测点 · 定值描述文件(dz_info_list) ---
|
||||
os << "\r\x1B[K |-- DZ Table (" << ld.dz_info_list.size() << "):\n";
|
||||
{
|
||||
const size_t n = ld.dz_info_list.size();
|
||||
for (size_t j = 0; j < n && j < MAX_ITEMS; ++j) {
|
||||
const DZ_TAB_STRUCT& z = ld.dz_info_list[j];
|
||||
os << "\r\x1B[K |-- [" << j << "] "
|
||||
<< "LN=" << z.LN_Num
|
||||
<< ", DZ=" << z.DZ_Num
|
||||
<< ", Name=" << trim_cstr(z.DZ_Name, sizeof(z.DZ_Name))
|
||||
<< ", Type=" << z.DZ_Type
|
||||
<< ", Min=" << z.DZ_Min
|
||||
<< ", Max=" << z.DZ_Max
|
||||
<< ", Def=" << z.DZ_Default
|
||||
<< ", Unit=" << trim_cstr(z.DZ_UNIT, sizeof(z.DZ_UNIT))
|
||||
<< "\n";
|
||||
}
|
||||
if (n > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (n - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// --- 监测点 · 暂态事件(qvvrevent) ---
|
||||
os << "\r\x1B[K |-- QVVR Event:\n";
|
||||
|
||||
// 1) 暂态事件列表
|
||||
os << "\r\x1B[K |-- Events (" << ld.qvvrevent.qvvrdata.size() << "):\n";
|
||||
{
|
||||
const size_t n = ld.qvvrevent.qvvrdata.size();
|
||||
for (size_t k = 0; k < n && k < MAX_ITEMS; ++k) {
|
||||
const qvvr_data& e = ld.qvvrevent.qvvrdata[k];
|
||||
os << "\r\x1B[K |-- [" << k << "] "
|
||||
<< "used=" << e.used_status
|
||||
<< ", type=" << e.QVVR_type
|
||||
<< ", time=" << static_cast<unsigned long long>(e.QVVR_time)
|
||||
<< ", per=" << e.QVVR_PerTime
|
||||
<< ", amp=" << e.QVVR_Amg
|
||||
<< ", phase="<< e.phase
|
||||
<< "\n";
|
||||
}
|
||||
if (n > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (n - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// 2) 文件组列表
|
||||
os << "\r\x1B[K |-- File Groups (" << ld.qvvrevent.qvvrfile.size() << "):\n";
|
||||
{
|
||||
const size_t n = ld.qvvrevent.qvvrfile.size();
|
||||
for (size_t g = 0; g < n && g < MAX_ITEMS; ++g) {
|
||||
const qvvr_file& fg = ld.qvvrevent.qvvrfile[g];
|
||||
os << "\r\x1B[K |-- [" << g << "] "
|
||||
<< "used=" << fg.used_status
|
||||
<< ", tcount=" << fg.file_time_count
|
||||
<< ", downloaded=" << fg.is_download
|
||||
<< ", paired=" << fg.is_pair
|
||||
<< "\n";
|
||||
|
||||
// 文件名列表(file_name)
|
||||
os << "\r\x1B[K |-- file_name (" << fg.file_name.size() << "):\n";
|
||||
{
|
||||
size_t c = 0;
|
||||
for (const auto& fn : fg.file_name) {
|
||||
if (c++ >= MAX_ITEMS) break;
|
||||
os << "\r\x1B[K |-- " << fn << "\n";
|
||||
}
|
||||
if (fg.file_name.size() > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (fg.file_name.size() - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
|
||||
// 已下载列表(file_download)
|
||||
os << "\r\x1B[K |-- file_download (" << fg.file_download.size() << "):\n";
|
||||
{
|
||||
size_t c = 0;
|
||||
for (const auto& fn : fg.file_download) {
|
||||
if (c++ >= MAX_ITEMS) break;
|
||||
os << "\r\x1B[K |-- " << fn << "\n";
|
||||
}
|
||||
if (fg.file_download.size() > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (fg.file_download.size() - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
if (n > MAX_ITEMS) {
|
||||
os << "\r\x1B[K |.. (+" << (n - MAX_ITEMS) << " more)\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
os << "\r\x1B[K------------------------------------\n";
|
||||
sendStr(fd, os.str());
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////打印所有的终端列表
|
||||
|
||||
void Worker::ledger(const std::string& terminal_id, int fd) {
|
||||
sendStr(fd, "\r\x1B[Kprint ledger in shell\n");
|
||||
|
||||
Reference in New Issue
Block a user