예제 #1
0
        public string GetErrMessageToLIMS(string deviceId, string info, int infoTypeID)
        {
            LIMSAPIData data = new LIMSAPIData();

            data.CardData     = "00000000";
            data.DeviceID     = deviceId;
            data.DeviceInfo   = info;
            data.DeviceStatID = 9999;
            data.InfoTypeID   = infoTypeID;
            data.PowerStatID  = 99;
            data.Sign         = MakeLIMSAPIDataSign(data, LIMSAppKey);

            return(JsonSerializer.Serialize(data));
        }
예제 #2
0
        /// <summary>
        /// 给LIMS发消息
        /// </summary>
        /// <param name="deviceId"></param>
        /// <param name="cardData"></param>
        /// <param name="stat"></param>
        /// <param name="powerstat"></param>
        /// <param name="info"></param>
        /// <param name="infoTypeID">消息类型,可以继承设备消息类型</param>
        /// <returns></returns>
        public string SendMsgToLIMS(string deviceId, string cardData, int stat, int powerstat, string info, int infoTypeID)
        {
            //制作一个读卡后30秒内不再相应读卡
            if (infoTypeID == (int)COMMAND.READCARD)
            {
                if (clientTable.ContainsKey(deviceId))
                {
                    DMClient oldClient = clientTable[deviceId];
                    //现在距上次读卡必须超过30秒。低于30秒则直接返回。
                    if (DateTime.Now < oldClient.LastCardReadingTime.AddSeconds(30))
                    {
                        return("The card reading time is too close.");
                    }
                    else
                    {
                        //超过30秒后更新之
                        oldClient.LastCardReadingTime = DateTime.Now;
                    }
                }
                else
                {
                    return("When reading the card, the device is no longer online.");
                }
            }
            LIMSAPIData data = new LIMSAPIData();

            data.CardData     = cardData;
            data.DeviceID     = deviceId;
            data.DeviceInfo   = info;
            data.DeviceStatID = stat;
            data.InfoTypeID   = infoTypeID;
            data.PowerStatID  = powerstat;
            data.Sign         = MakeLIMSAPIDataSign(data, LIMSAppKey);

            string json = JsonSerializer.Serialize(data);

            RESTClient restClient = new RESTClient(LIMSServerURL, LIMSAppKey);

            try
            {
                return(restClient.Post(json, "api/event/api/UpdateDevice"));
            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
                return(ex.Message);
            }
            //还未填入api地址
        }
예제 #3
0
        /// <summary>
        /// 为了LIMS同步调用设备发送命令准备的方法
        /// </summary>
        /// <param name="deviceId"></param>
        /// <param name="cardData"></param>
        /// <param name="stat"></param>
        /// <param name="powerstat"></param>
        /// <param name="info"></param>
        /// <param name="infoTypeID"></param>
        public void ReplyMsgToLIMS(string deviceId, string cardData, int stat, int powerstat, string info, int infoTypeID)
        {
            LIMSAPIData data = new LIMSAPIData();

            data.CardData     = cardData;
            data.DeviceID     = deviceId;
            data.DeviceInfo   = info;
            data.DeviceStatID = stat;
            data.InfoTypeID   = infoTypeID;
            data.PowerStatID  = powerstat;
            data.Sign         = MakeLIMSAPIDataSign(data, LIMSAppKey);

            string   json     = JsonSerializer.Serialize(data);
            DMClient dmClient = clientTable[deviceId];

            dmClient.SetReplayMessgaeToLIMS(json);
        }
예제 #4
0
        private string MakeLIMSAPIDataSign(LIMSAPIData data, string salt)
        {
            string origin = data.CardData + data.DeviceID + data.DeviceInfo + data.DeviceStatID + data.InfoTypeID + data.PowerStatID + salt;

            return(GetMD5Hash(origin));
        }