private static void cbNetMsgProc(int handle, int nType, IntPtr pointer) { if (GlobalMain.from == null) { return; } ProtocolDVS driver = GlobalMain.from._listDriver.Find(x => x.instance == handle) as ProtocolDVS; if (driver == null) { return; } switch ((CMD_CODE)nType) { case CMD_CODE.R_CONNECT: driver.OnConnectEH(driver.device, 0); break; case CMD_CODE.R_DISCONNECT: driver.OnConnectEH(driver.device, 1); break; case CMD_CODE.R_EVENT: { EVENT_PACK pack = (EVENT_PACK)Marshal.PtrToStructure(pointer, typeof(EVENT_PACK)); if (pack.alarmneed == 0) { break; } Sensor sensor = driver.FindSensorBySID(pack.channel, pack.id); if (sensor != null) { STATUS_INFO info = new STATUS_INFO(); info.no = pack.no; info.id = sensor.id; info.type = (MONITOR_TYPE)sensor.type; info.name = sensor.name; info.range1 = pack.range1.ToString(); info.range2 = pack.range2.ToString(); info.confidence = pack.confidence / 100; info.classification = (CLASSIFICATION)pack.classification; info.status = STATUS_TYPE.ALARM; DateTime vDateTime = new DateTime( pack.time.vYear, pack.time.vMonth, pack.time.vDay, // 月日年 pack.time.vHour, pack.time.vMinute, pack.time.vSecond, // 时分秒 pack.time.vMiliseconds); // 毫秒 info.time = vDateTime.ToString("yyyy-MM-dd HH:mm:ss"); driver.OnObjectStatusEH(info); } } break; case CMD_CODE.R_ERROR: { ERROR_PACK pack = (ERROR_PACK)Marshal.PtrToStructure(pointer, typeof(ERROR_PACK)); Sensor sensor = driver.FindSensorBySID(pack.channel, pack.id); if (sensor != null) { DateTime vDateTime = new DateTime( pack.time.vYear, pack.time.vMonth, pack.time.vDay, // 月日年 pack.time.vHour, pack.time.vMinute, pack.time.vSecond, // 时分秒 pack.time.vMiliseconds); // 毫秒 Channel channel = driver.device.listChannel.Find(x => x.number == pack.channel); if (channel != null) { List <Sensor> listSensorFront = channel.listSensor.FindAll(x => (x.number != sensor.number && x.status == STATUS_TYPE.ERROR)); foreach (var front in listSensorFront) { ERROR_INFO infoFront = new ERROR_INFO(); infoFront.id = front.id; infoFront.name = front.name; infoFront.status = STATUS_TYPE.NORMAL; infoFront.starttime = vDateTime.ToString("yyyy-MM-dd HH:mm:ss"); infoFront.type = OBJECT_TYPE.sensor; driver.OnObjectErrorEH(infoFront); } } ERROR_INFO info = new ERROR_INFO(); info.id = sensor.id; info.name = sensor.name; if (pack.error == 1) { info.status = STATUS_TYPE.ERROR; } else if (pack.error == 0) { info.status = STATUS_TYPE.NORMAL; } info.starttime = vDateTime.ToString("yyyy-MM-dd HH:mm:ss"); info.type = OBJECT_TYPE.sensor; driver.OnObjectErrorEH(info); } } break; } }
public static void cbNetMsgProc(int id, int nType, IntPtr pointer) { switch ((CMD_CODE)nType) { case CMD_CODE.R_CONNECT: g_protocalInanter.OnConnectEH(g_protocalInanter.device, 0); break; case CMD_CODE.R_DISCONNECT: g_protocalInanter.OnConnectEH(g_protocalInanter.device, 1); break; case CMD_CODE.R_EVENT: { EVENT_PACK pack = (EVENT_PACK)Marshal.PtrToStructure(pointer, typeof(EVENT_PACK)); Sensor sensor = g_protocalInanter.FindSensorBySID(pack.channel, pack.id); if (sensor != null) { STATUS_INFO info = new STATUS_INFO(); info.no = (int)sensor.id; info.id = sensor.id; info.type = (MONITOR_TYPE)sensor.type; info.name = sensor.name; info.range1 = pack.range1.ToString(); info.range2 = pack.range2.ToString(); info.confidence = pack.confidence; info.classification = (CLASSIFICATION)pack.classification; if (pack.alarmneed == 0) { info.status = STATUS_TYPE.WARNING; } else { info.status = STATUS_TYPE.ALARM; } DateTime vDateTime = new DateTime( pack.time.vYear, pack.time.vMonth, pack.time.vDay, // 月日年 pack.time.vHour, pack.time.vMinute, pack.time.vSecond, // 时分秒 pack.time.vMiliseconds); // 毫秒 info.time = vDateTime.ToString("yyyy-MM-dd HH:mm:ss"); g_protocalInanter.OnObjectStatusEH(info); } } break; case CMD_CODE.R_STATUS: { STATUS_PACK pack = (STATUS_PACK)Marshal.PtrToStructure(pointer, typeof(STATUS_PACK)); Sensor sensor = g_protocalInanter.FindSensorBySID(pack.channel, pack.id); if (sensor != null) { DateTime vDateTime = new DateTime( pack.time.vYear, pack.time.vMonth, pack.time.vDay, // 月日年 pack.time.vHour, pack.time.vMinute, pack.time.vSecond, // 时分秒 pack.time.vMiliseconds); // 毫秒 Channel channel = g_protocalInanter.device.listChannel.Find(x => x.number == pack.channel); if (channel != null) { List <Sensor> listSensorFront = channel.listSensor.FindAll(x => (x.number != sensor.number && x.status == STATUS_TYPE.ERROR)); foreach (var front in listSensorFront) { ERROR_INFO infoFront = new ERROR_INFO(); infoFront.id = front.id; infoFront.name = front.name; infoFront.status = STATUS_TYPE.NORMAL; infoFront.starttime = vDateTime.ToString("yyyy-MM-dd HH:mm:ss"); infoFront.type = OBJECT_TYPE.sensor; g_protocalInanter.OnObjectErrorEH(infoFront); } } ERROR_INFO info = new ERROR_INFO(); info.id = sensor.id; info.name = sensor.name; if (pack.status == 0) { info.status = STATUS_TYPE.NORMAL; } else if (pack.status == 1) { info.status = STATUS_TYPE.ERROR; } else if (pack.status == 2) { info.status = STATUS_TYPE.DISABLE; } else if (pack.status == 3) { info.status = STATUS_TYPE.OFFLINE; } else if (pack.status == 4) { info.status = STATUS_TYPE.UNCOVER; } info.starttime = vDateTime.ToString("yyyy-MM-dd HH:mm:ss"); info.type = OBJECT_TYPE.sensor; g_protocalInanter.OnObjectErrorEH(info); } } break; } }