Files
windpacer 16fc7a2598 Initial commit: HC900 Crawler
Honeywell HC900을 Modbus TCP로 직접 폴링 → gRPC → C# 크롤러 → PostgreSQL.
기존 Experion OPC UA 데이터 경로를 HC900 직접 통신으로 대체.

- industrial-comm/cpp: C++ Modbus 게이트웨이 (gRPC 서버)
- src: C# .NET 8 ASP.NET Core 크롤러 + 웹 UI (3-Layer)
- mcp-server: Python FastMCP (RAG/NL2SQL/P&ID)
- 다중 컨트롤러(N-Controller) 지원

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 20:28:14 +09:00

48 lines
1.7 KiB
C++

#pragma once
#include <cstdint>
#include <memory>
#include <vector>
#include "itransport.hpp"
#include "data_format.hpp"
class Controller {
public:
explicit Controller(std::unique_ptr<ITransport> transport);
// lifecycle
void poll();
bool connect(const char* host, std::uint16_t port);
void disconnect();
bool is_connected() const;
// raw register
bool read_register(std::uint16_t addr, std::uint16_t& value);
bool write_register(std::uint16_t addr, std::uint16_t value);
bool read_raw(std::uint16_t addr, std::uint16_t count, std::vector<std::uint16_t>& out);
// 32-bit
bool read_int32(std::uint16_t addr, std::int32_t& value, const DataFormat& fmt);
bool write_int32(std::uint16_t addr, std::int32_t value, const DataFormat& fmt);
bool read_uint32(std::uint16_t addr, std::uint32_t& value, const DataFormat& fmt);
bool write_uint32(std::uint16_t addr, std::uint32_t value, const DataFormat& fmt);
// float / double
bool read_float(std::uint16_t addr, float& value, const DataFormat& fmt);
bool write_float(std::uint16_t addr, float value, const DataFormat& fmt);
bool read_double(std::uint16_t addr, double& value, const DataFormat& fmt);
bool write_double(std::uint16_t addr, double value, const DataFormat& fmt);
// 64-bit
bool read_int64(std::uint16_t addr, std::int64_t& value, const DataFormat& fmt);
bool write_int64(std::uint16_t addr, std::int64_t value, const DataFormat& fmt);
bool read_uint64(std::uint16_t addr, std::uint64_t& value, const DataFormat& fmt);
bool write_uint64(std::uint16_t addr, std::uint64_t value, const DataFormat& fmt);
private:
std::unique_ptr<ITransport> transport_;
};