# HJ212_Server **Repository Path**: daemon811/HJ212_Server ## Basic Information - **Project Name**: HJ212_Server - **Description**: HJ212国标服务端协议 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-05-22 - **Last Updated**: 2025-05-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HJ212国标服务端协议: ``` C# IGB_Server gb = new GB_Server(new TcpServer("0.0.0.0", 2756)); gb.OnClientConnect += Gb_OnClientConnect; gb.OnAskSetSystemTime += Gb_OnAskSetSystemTime; async Task Gb_OnAskSetSystemTime(int clientId, (string PolId, HJ212_Server.Model.RspInfo RspInfo) objects) { await Task.CompletedTask; } await gb.StartAsync(); async Task Gb_OnClientConnect(int clientId) { try { #region c1 await gb.SetTimeoutAndRetryAsync(clientId, "1234567890123456", "123456", ST.大气环境污染源, 10, 3); #endregion } catch (TimeoutException ex) { Console.WriteLine(ex.Message); } } ``` ## 更多详见Test例子,例子中附带测试命令 # 实现HJ212-2017《污染源在线自动监控(监测)系统数据传输标准》中 附 录 C(资料性附录)通讯命令示例和拆分包及应答机制示例 中所有(表1-表50)详细接口如下,若有错误和建议请及时联系我改正: ``` C# /// C1设置超时时间及重发次数 Task SetTimeoutAndRetryAsync(Guid clientId, string mn, string pw, ST st, int overTime, int reCount, int timeOut = 5000); /// C2提取现场机时间 Task GetSystemTimeAsync(Guid clientId, string mn, string pw, ST st, string polId, int timeOut = 5000); /// C3设置现场机时间 Task SetSystemTimeAsync(Guid clientId, string mn, string pw, ST st, string polId, DateTime systemTime, int timeOut = 5000); /// C4现场机时间校准请求 event ActivelyPushDataServerEventHandler<(string PolId, RspInfo RspInfo)> OnAskSetSystemTime; /// C5提取实时数据间隔 Task GetRealTimeDataIntervalAsync(Guid clientId, string mn, string pw, ST st, int timeOut = 5000); /// C6设置实时数据间隔 Task SetRealTimeDataIntervalAsync(Guid clientId, string mn, string pw, ST st, int interval, int timeOut = 5000); /// C7提取分钟数据间隔 Task GetMinuteDataIntervalAsync(Guid clientId, string mn, string pw, ST st, int timeOut = 5000); /// C8设置分钟数据间隔 Task SetMinuteDataIntervalAsync(Guid clientId, string mn, string pw, ST st, int interval, int timeOut = 5000); /// C9设置现场机访问密码 Task SetNewPWAsync(Guid clientId, string mn, string pw, ST st, string newPW, int timeOut = 5000); /// C10取污染物实时数据 Task StartRealTimeDataAsync(Guid clientId, string mn, string pw, ST st, int timeOut = 5000); /// C11停止察看污染物实时数据 Task StopRealTimeDataAsync(Guid clientId, string mn, string pw, ST st, int timeOut = 5000); /// C12取设备运行状态数据 Task StartRunningStateDataAsync(Guid clientId, string mn, string pw, ST st, int timeOut = 5000); /// C13停止察看设备运行状态 Task StopRunningStateDataAsync(Guid clientId, string mn, string pw, ST st, int timeOut = 5000); /// /// C14上传污染物实时数据 /// (C25上传噪声声级实时数据 同) /// (C29上传工况实时数据 同) /// event ActivelyPushDataServerEventHandler<(DateTime DataTime, List Data, RspInfo RspInfo)> OnUploadRealTimeData; /// C15上传设备运行状态数据 event ActivelyPushDataServerEventHandler<(DateTime DataTime, List Data, RspInfo RspInfo)> OnUploadRunningStateData; /// /// C16上传污染物分钟数据 /// (C26上传噪声声级分钟数据 同) /// event ActivelyPushDataServerEventHandler<(DateTime DataTime, List Data, RspInfo RspInfo)> OnUploadMinuteData; /// /// C17上传污染物小时数据 /// (C27上传噪声声级小时数据 同) /// event ActivelyPushDataServerEventHandler<(DateTime DataTime, List Data, RspInfo RspInfo)> OnUploadHourData; /// /// C18上传污染物日历史数据 /// (C28上传噪声声级日历史数据 同) /// event ActivelyPushDataServerEventHandler<(DateTime DataTime, List Data, RspInfo RspInfo)> OnUploadDayData; /// C19上传设备运行时间日历史数据 event ActivelyPushDataServerEventHandler<(DateTime DataTime, List Data, RspInfo RspInfo)> OnUploadRunningTimeData; /// /// C20取污染物分钟历史数据 /// 遵循C47-C50的规则 /// Task> GetMinuteDataAsync(Guid clientId, string mn, string pw, ST st, DateTime beginTime, DateTime endTime, int timeOut = 5000); /// /// C21取污染物小时历史数据 /// 遵循C47-C50的规则 /// Task> GetHourDataAsync(Guid clientId, string mn, string pw, ST st, DateTime beginTime, DateTime endTime, int timeOut = 5000); /// /// C22取污染物日历史数据 /// 遵循C47-C50的规则 /// Task> GetDayDataAsync(Guid clientId, string mn, string pw, ST st, DateTime beginTime, DateTime endTime, int timeOut = 5000); /// /// C23取设备运行时间日历史数据 /// 遵循C47-C50的规则 /// Task> GetRunningTimeDataAsync(Guid clientId, string mn, string pw, ST st, DateTime beginTime, DateTime endTime, int timeOut = 5000); /// C24上传数采仪开机时间 event ActivelyPushDataServerEventHandler<(DateTime DataTime, DateTime RestartTime, RspInfo RspInfo)> OnUploadAcquisitionDeviceRestartTime; /// C30零点校准量程校准 Task CalibrateAsync(Guid clientId, string mn, string pw, ST st, string polId, int timeOut = 5000); /// C31即时采样 Task RealTimeSamplingAsync(Guid clientId, string mn, string pw, ST st, string polId, int timeOut = 5000); /// C32启动清洗/反吹 Task StartCleaningOrBlowbackAsync(Guid clientId, string mn, string pw, ST st, string polId, int timeOut = 5000); /// C33比对采样 Task ComparisonSamplingAsync(Guid clientId, string mn, string pw, ST st, string polId, int timeOut = 5000); /// C34超标留样 Task<(DateTime DataTime, string VaseNo)> OutOfStandardRetentionSampleAsync(Guid clientId, string mn, string pw, ST st, int timeOut = 5000); /// C35设置采样时间周期(单位:小时) Task SetSamplingPeriodAsync(Guid clientId, string mn, string pw, ST st, string polId, TimeOnly cstartTime, int ctime, int timeOut = 5000); /// C36提取采样时间周期(单位:小时) Task<(TimeOnly CstartTime, int CTime)> GetSamplingPeriodAsync(Guid clientId, string mn, string pw, ST st, string polId, int timeOut = 5000); /// C37提取出样时间(单位:分钟) Task GetSampleExtractionTimeAsync(Guid clientId, string mn, string pw, ST st, string polId, int timeOut = 5000); /// C38提取设备唯一标识 Task GetSNAsync(Guid clientId, string mn, string pw, ST st, string polId, int timeOut = 5000); /// C39上传设备唯一标识 event ActivelyPushDataServerEventHandler<(DateTime DataTime, string PolId, string SN, RspInfo RspInfo)> OnUploadSN; /// C40上传现场机信息(日志) event ActivelyPushDataServerEventHandler<(DateTime DataTime, string? PolId, string Log, RspInfo RspInfo)> OnUploadLog; /// C41提取现场机信息(日志) Task> GetLogInfosAsync(Guid clientId, string mn, string pw, ST st, string? polId, DateTime beginTime, DateTime endTime, int timeOut = 5000); /// /// C42上传现场机信息(状态) /// (C44上传现场机信息(参数) 同) /// event ActivelyPushDataServerEventHandler<(DateTime DataTime, string PolId, List DeviceInfos, RspInfo RspInfo)> OnUploadInfo; /// C43提取现场机信息(状态) Task GetStateInfoAsync(Guid clientId, string mn, string pw, ST st, string polId, int timeOut = 5000); /// C45提取现场机信息(参数) Task GetArgumentInfoAsync(Guid clientId, string mn, string pw, ST st, string polId, int timeOut = 5000); /// C46设置现场机参数 Task SetInfoAsync(Guid clientId, string mn, string pw, ST st, string polId, string infoId, string info, int timeOut = 5000); ```