| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- using com.hnshituo.core.webapp.vo;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net.NetworkInformation;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- namespace RailLocalMeter
- {
- public class PingNetwork
- {
- Log lg = Log.GetInstance();
- private bool blThreadFlag = true;
- Thread DataCollectThread = null;//采集进程
- string dbFile = Path.Combine(AppConfigCache.path, "data/rfidDb.data");
- MeterBaseRfidInfoService rfidServer = new MeterBaseRfidInfoService();
- public PingNetwork()
- {
- DataCollectThread = new Thread(new ThreadStart(DataCollect));
- }
- public void start()
- {
- DataCollectThread.Start();
- }
- public void stop()
- {
- blThreadFlag = false;
- }
- private void DataCollect()
- {
- if (!blThreadFlag) return;
- while (blThreadFlag)
- {
- try
- {
- Ping pingSend = new Ping();
- PingReply reply = pingSend.Send(AppConfigCache.ServiceIp, 1000);
- if (reply.Status == IPStatus.Success)
- CacleCls.serverFlag = true;
- else
- CacleCls.serverFlag = false;
- }
- catch (Exception)
- {
- CacleCls.serverFlag = false;
- }
- finally
- {
- if (CacleCls.serverFlag)
- {
- if (CacleCls.weight < 500 && DateTime.Now > CacleCls.updateRfidInfoTime)
- {
- CacleCls.updateRfidInfoTime.Value.AddHours(1); //每隔一小时更新一次rfid数据
- Dictionary<string, string> rfidInfo = new Dictionary<string, string>();
- RESTfulResult<List<MeterBaseRfidInfo>> rfids = rfidServer.doQueryRfid(new MeterBaseRfidInfo { valueFlag = "0" });
- if (rfids.Succeed)
- {
- if (rfids.Data != null && rfids.Data.Count > 0)
- {
- StringBuilder sb = new StringBuilder();
- foreach (MeterBaseRfidInfo rfid in rfids.Data)
- {
- try
- {
- sb.AppendLine($"{rfid.rfidCode},{rfid.carNo}");
- rfidInfo.Add(rfid.rfidCode, rfid.carNo);
- }
- catch { }
- }
- try
- {
- //如果目标文件存在则覆盖,不存在则创建
- File.WriteAllText(dbFile, sb.ToString());
- }
- catch (Exception ex)
- {
- lg.WriteLog(LogType.SystemLog, "写入rfid数据到本地失败:" + ex.Message);
- }
- CacleCls.rifdInfo = rfidInfo;
- }
- }
- else
- {
- lg.WriteLog(LogType.serverLog, $"获取RFID信息失败:{rfids.Message}");
- }
- }
- }
- else
- {
- if (CacleCls.rifdInfo == null || CacleCls.rifdInfo.Count == 0)
- {
- //读取本地rfid数据文件
- try
- {
- if (File.Exists(dbFile))
- {
- Dictionary<string, string> rfidInfo = new Dictionary<string, string>();
- string[] strs = File.ReadAllLines(dbFile);
- foreach (string str in strs)
- {
- try
- {
- string[] strInfo = str.Split(',');
- if (strInfo.Length == 2)
- {
- rfidInfo.Add(strInfo[0], strInfo[1]);
- }
- }
- catch { }
- }
- CacleCls.rifdInfo = rfidInfo;
- }
- }
- catch (Exception ex)
- {
- lg.WriteLog(LogType.WriteDbLog, "写入信息失败:" + ex.Message);
- }
- }
- }
- Thread.Sleep(1000); //1秒ping一次网络
- }
- }
- }
- }
- }
|