Exemplo n.º 1
0
 private bool Display(string text, LEDMessageShowConfig config)
 {
     for (int i = 0; i < 3; i++)
     {
         if (DisplayOnce(text, config))
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 2
0
        private bool DisplayOnce(string text, LEDMessageShowConfig showConfig)
        {
            Logger.Debug("发送文字到显示屏{0}:{1}", text, LEDOptions.IP);
            byte b = QYLED_DLL.SendInternalText_Net(
                text,
                LEDOptions.IP,
                1,                      //udp
                64, 32,
                LEDOptions.MaterialUid, //内码文字ID
                0,                      //单基色
                showConfig.ShowStyle,   //立即显示
                showConfig.ShowSpeed,   //显示速度
                1,                      //停留时间
                1,                      //红色
                1,                      //宋体
                showConfig.FontSize,    //0代表12x12字体大小 1:16x16
                2,                      //本素材立即更新
                false                   //掉电不保存
                );
            bool ret = Convert.ToInt32(b) == 0 ? true : false;

            Logger.Debug("LED {0} 发送失败", LEDOptions.IP);
            return(ret);
        }
Exemplo n.º 3
0
            internal async void ProcessAsync(object sender, EventArgs e)
            {
                try
                {
                    if (!Enabled)
                    {
                        return;
                    }

                    Logger.Debug("{0}按钮触发", scaleOperator.Name);
                    if (IsBusy)
                    {
                        return;
                    }
                    IsBusy = true;

                    //Progress?.Invoke(this, new ProgressEventArgs("开始工作"));
                    Logger.Debug("开始工作");

                    Busy?.Invoke(this, new EventArgs());

                    if (!scaleOperator.IsGratingsOff())
                    {
                        var config = new LEDMessageShowConfig
                        {
                            FontSize  = 0,
                            ShowStyle = 3,
                            ShowSpeed = 8
                        };
                        scaleOperator.Display("调整车辆", config);
                        NeedAdjust?.Invoke(this, new EventArgs());
                        return;
                    }

                    //call remote service to get weight and plate number
                    //Progress?.Invoke(this, new ProgressEventArgs("正在请求重量"));
                    Logger.Debug("[{0}]请求重量", scaleOperator.Name);
                    GetWtResponse resp = await scaleOperator.RestClient.GetWtAsync(scaleOperator.ScaleIP, scaleOperator.InOrOut.ToString());

                    Logger.Debug("[{0}]返回重量{1}", scaleOperator.Name, resp.wt_num);

                    /*GetWtResponse resp = new GetWtResponse()
                     * {
                     *  status = 1,
                     *  tk_no = "辽A 88888888",
                     *  wt_num = 888.88
                     * };*/
                    if (resp.status == "0")
                    {
                        //Progress?.Invoke(this, new ProgressEventArgs("请求重量失败"));
                        Logger.Warn("称重失败");
                        return;
                    }

                    //Progress?.Invoke(this, new ProgressEventArgs("正在输出到显示屏"));
                    string text = String.Format(scaleOperator.LEDOptions.CPZLMessage.Template, resp.tk_no, resp.wt_num);
                    if (!scaleOperator.Display(text, scaleOperator.LEDOptions.CPZLMessage.ShowConfig))
                    {
                        //Progress?.Invoke(this, new ProgressEventArgs("输出到显示屏失败"));
                        Logger.Warn("LED显示失败");
                        //return;
                    }

                    //Progress?.Invoke(this, new ProgressEventArgs("正在抬杆"));
                    Logger.Debug("[{0}]请求抬杆", scaleOperator.Name);
                    GatePassResponse gpResp = await scaleOperator.RestClient.GatePassAsync(scaleOperator.ScaleIP, scaleOperator.InOrOut.ToString(), resp.tk_no, resp.wt_num);

                    Logger.Debug("[{0}]返回抬杆", scaleOperator.Name);

                    /*GatePassResponse gpResp = new GatePassResponse()
                     * {
                     *  status = 1
                     * };*/
                    if (gpResp.status == "0")//抬杆失败
                    {
                        //Progress?.Invoke(this, new ProgressEventArgs("抬杆失败"));
                        Logger.Warn("抬杆失败:" + gpResp.reason);
                        //SwitchRelay(false);//no need to call this, it's already red
                        return;
                    }

                    Logger.Info("抬杆成功:");
                    //Progress?.Invoke(this, new ProgressEventArgs("抬杆成功"));

                    Succeed?.Invoke(this, new EventArgs());
                }
                catch (Exception ex)
                {
                    //Progress?.Invoke(this, new ProgressEventArgs("发生错误:" + ex.Message));
                    Logger.Warn("{0}上的本次操作失败:{1}", scaleOperator.Name, ex.ToString());
                }
                finally
                {
                    IsBusy = false;
                }
            }