예제 #1
0
        private int _Version(Type type, MethodInfo method_info)
        {
            TypeMethod typeMethod = _Counts.FirstOrDefault((tm) => tm.Type == type && tm.Method == method_info);

            if (typeMethod == null)
            {
                typeMethod = new TypeMethod(type, method_info);
                _Counts.Add(typeMethod);
            }
            return(typeMethod.Increase());
        }
예제 #2
0
        private async void UpdateItem()
        {
            var typeConst         = new TypeMethod();
            var urlConst          = new UrlApi();
            var registersServices = new RegistersServices();

            if (!string.IsNullOrEmpty(Money.Text))
            {
                var indexDtbSelected  = DtbPicker.SelectedIndex;
                var indexItemSelected = ContentPicker.SelectedIndex;
                var status            = false;

                double money       = double.Parse(Money.Text);
                string description = string.IsNullOrEmpty(Description.Text) ? "" : Description.Text;
                string idUser      = Application.Current.Properties["userId"].ToString();

                if (indexDtbSelected == 0)
                {
                    string type      = typeConst.Cost;
                    int    idService = viewModel.ListCostsId[indexItemSelected];

                    PutRegister ItemCost = new PutRegister(id, type, money, description, idService);

                    status = await registersServices.PutRegister(ItemCost);
                }
                else
                {
                    string type      = typeConst.Income;
                    int    idService = viewModel.ListIncomesId[indexItemSelected];

                    PutRegister ItemIncome = new PutRegister(id, type, money, description, idService);

                    status = await registersServices.PutRegister(ItemIncome);
                }

                if (status)
                {
                    await DisplayAlert("Thông báo", "Cập nhật thành công!", "ok");

                    await Navigation.PushAsync(new HomePage());
                }
                else
                {
                    await DisplayAlert("Thông báo", "Cập nhật không thành công. Vui lòng thử lại sau!", "ok");
                }
            }
            else
            {
                await DisplayAlert("Thông báo", "Vui lòng nhập đầy đủ thông tin!", "cancel");

                return;
            }
        }
        async Task ExecuteLoadChartCommand(int id)
        {
            IsBusy = true;
            try
            {
                DataList.Clear();
                typeConst      = new TypeMethod();
                chartsServices = new ChartsServices();
                string idUser   = Application.Current.Properties["userId"].ToString();
                var    dataList = await chartsServices.GetDataChart(idUser, id, typeConst.Income);

                if (dataList != null)
                {
                    DataList.Clear();
                    foreach (DataChart item in dataList.data.items)
                    {
                        DataList.Add(item);
                    }

                    if (DataList.Count == 0)
                    {
                        IsVisibleAlert = true;
                    }
                    else
                    {
                        IsVisibleAlert = false;
                    }
                    IsVisible = true;
                }
                else
                {
                    IsVisibleAlert = true;
                    IsVisible      = false;
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                IsBusy = false;
            }
        }
예제 #4
0
        private async Task InitializeDataAsync(string type, int id)
        {
            var registersServices = new RegistersServices();
            var typeConst         = new TypeMethod();
            var registerItem      = new Register();

            //Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(expenseItem));

            registerItem = await registersServices.GetRegisterById(type, id);

            itemDetail = registerItem.data;

            if (type == typeConst.Income)
            {
                itemDetail.typeSub = "Thu nhập";
            }
            if (type == typeConst.Cost)
            {
                itemDetail.typeSub = "Chi phí";
            }
        }
    public static string  stringFromMethod(TypeMethod the_enum)
    {
        switch (the_enum)
        {
        case TypeMethod.Method_Default:
            return("Default");

        case TypeMethod.Method_Alert:
            return("Alert");

        case TypeMethod.Method_Email:
            return("Email");

        case TypeMethod.Method_SMS:
            return("SMS");

        default:
            Debug.Assert(false);
            return(null);
        }
    }
        async Task ExecuteLoadItemsCommand()
        {
            IsBusy = true;

            try
            {
                TransactionList.Clear();

                var idUser = Application.Current.Properties["userId"].ToString();

                typeConst = new TypeMethod();

                typesServices = new TypesServices();

                int HeightList = 0;

                var transactionList = await typesServices.GetAllTransaction(typeConst.Income, idUser);

                Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(transactionList));
                foreach (DataTransaction item in transactionList.data.items)
                {
                    HeightList = (item.data.Count * 40) + (10 * item.data.Count) + 30;

                    item.AddProperty(HeightList);

                    TransactionList.Add(item);

                    HeightList = 0;
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                IsBusy = false;
            }
        }
예제 #7
0
        private async Task InitializeDataAsync()
        {
            var    typeConst         = new TypeMethod();
            var    registersServices = new RegistersServices();
            var    usersServices     = new UsersServices();
            int    HeightList        = 0;
            double Cost   = 0;
            double Income = 0;

            var idUser = Application.Current.Properties["userId"].ToString();

            User = await usersServices.GetUserAsync(idUser);

            RegistersList = await registersServices.GetAllRegisters(idUser);

            foreach (ItemRegister itemRegister in RegistersList.data.items)
            {
                HeightList = (itemRegister.data.Count * 40) + (10 * itemRegister.data.Count) + 30;
                //Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(itemList));
                foreach (ItemDetail itemDetail in itemRegister.data)
                {
                    if (itemDetail.type == typeConst.Cost)
                    {
                        Cost += itemDetail.money;
                    }

                    if (itemDetail.type == typeConst.Income)
                    {
                        Income += itemDetail.money;
                    }
                }

                itemRegister.AddProperty(HeightList, Cost, Income);

                HeightList = 0; Cost = 0; Income = 0;
            }
        }
예제 #8
0
        private void 條碼讀取器動作執行緒(object obj)
        {
            while (true)
            {
                // 讀檔
                if (GlobalData.DM[DmTable.DM_8120CCD讀取2D碼].Equals("1"))
                {
                    if (formStartModel.允許2D讀取Tag)
                    {
                        GlobalParameter.ReadContent = readerAccessor.ExecCommand("LON", 8000);
                        if (string.IsNullOrEmpty(GlobalParameter.ReadContent))
                        {
                            readerAccessor.ExecCommand("LOFF");
                            PLCMethod.WriteSingle(DmTable.DM_8221CCD讀2D檔失敗, 1);
                        }
                        else
                        {
                            PLCMethod.WriteSingle(DmTable.DM_8220CCD讀2D碼完成, 1);
                        }
                    }
                    else
                    {
                        PLCMethod.WriteSingle(DmTable.DM_8220CCD讀2D碼完成, 1);
                    }

                    PLCMethod.WriteSingle(DmTable.DM_8120CCD讀取2D碼, 0);
                }
                Thread.Sleep(100);

                // 寫入
                if (GlobalData.DM[DmTable.DM_81212D碼通知寫入].Equals("1"))
                {
                    string xmlString = "<?xml version='1.0' encoding='UTF-8'?>"
                                       + "<COMMAND>"
                                       + "<COM_NUM>11</COM_NUM>"
                                       + "<INFORMATION>"
                                       + "<ID>" + GlobalParameter.ReadContent + "</ID>"
                                       + "</INFORMATION>"
                                       + "</COMMAND>";
                    socket.SendTimeout    = 10000;
                    socket.ReceiveTimeout = 5000;

                    // 送出XML
                    XmlDocument doc = new XmlDocument();
                    doc.InnerXml = xmlString;
                    Byte[] sendBuf = Encoding.UTF8.GetBytes(doc.OuterXml);
                    socket.Send(sendBuf, sendBuf.Length, SocketFlags.None);

                    // 回傳XML
                    Byte[] recvBuf = new Byte[0x40000];
                    for (Int32 i = 0; i < recvBuf.Length; i++)
                    {
                        recvBuf[i] = 0;
                    }
                    socket.Receive(recvBuf, 0, recvBuf.Length, SocketFlags.None);

                    // 取得子節點參數,正確:"0"、錯誤:"1"
                    XElement xmlroot = XElement.Parse(TypeMethod.FormtXmlDoc(Encoding.UTF8.GetString(recvBuf)));
                    string   error   = ((XElement)(xmlroot.Element("ERROR"))).Value;
                    int      dm      = (error == "0") ? DmTable.DM_82222D碼寫入完成 : DmTable.DM_82232D碼寫入失敗;
                    PLCMethod.WriteSingle(dm, 1);

                    // PLC:DM_81212D碼通知寫入,清空點位
                    PLCMethod.WriteSingle(DmTable.DM_81212D碼通知寫入, 0);
                }
                Thread.Sleep(100);
            }
        }
예제 #9
0
        private void Step3寫入Laser資料(PieceResultModel pieceResultModel)
        {
            string cmd = string.Empty, response = string.Empty, record = string.Empty;

            if (formStartModel.允許雷射打印Tag)
            {
                // 設定 MKM
                if (formStartModel.SHT遮光閥狀態.Equals("1"))
                {
                    cmd      = LaserCommand.MKM指令接收控制設定("0");
                    response = LaserExecuteWrite.執行MRK印字觸控制設定(cmd);
                    if (ValidateUtility.DisplayMessage(response))
                    {
                        return;
                    }
                    formStartModel.SHT遮光閥狀態 = "0";
                    record += "1.SHT,";
                }

                // 設定 FNO
                cmd      = LaserCommand.FNO文件變更控制設定(partNoJoinTrayAndLaser.FnoNo);
                response = LaserExecuteWrite.執行FNO文件變更控制設定(cmd);
                if (ValidateUtility.DisplayMessage(response))
                {
                    return;
                }
                record += "2.FNO,";

                // 雷射功率
                cmd = LaserCommand.LPW激光功率控制設定(string.Format("{0:000.0}",
                                                             Convert.ToInt32(partNoJoinTrayAndLaser.Power)));
                response = LaserExecuteWrite.執行LPW激光功率控制設定(cmd);
                if (ValidateUtility.DisplayMessage(response))
                {
                    return;
                }
                record += "3.LPW,";

                // 掃描速度
                cmd = LaserCommand.SSP掃描速度控制設定(string.Format("{0:00000}",
                                                             Convert.ToInt32(partNoJoinTrayAndLaser.Speed)));
                response = LaserExecuteWrite.執行SSP掃描速度控制設定(cmd);
                if (ValidateUtility.DisplayMessage(response))
                {
                    return;
                }
                record += "4.SSP,";

                // 設定座標位置
                List <double> list = new List <double> {
                    { pieceResultModel.X位置 }, { pieceResultModel.Y位置 }
                };
                List <string> laserList = TypeMethod.SetFormatValue(list, "{0:000.000}");
                ModelSPC      modelSPC  = new ModelSPC
                {
                    SonCmd    = "S",
                    Xposition = laserList[0],
                    Yposition = laserList[1]
                };
                cmd      = LaserCommand.SPC文字條件控制設定(modelSPC);
                response = LaserExecuteWrite.執行SPC文字條件控制設定(cmd);
                if (ValidateUtility.DisplayMessage(response))
                {
                    return;
                }
                record += "5.SPC,";

                // 雷射參數儲存
                LaserExecuteWrite.執行FOR文件覆盖保存控制設定(LaserCommand.FOR文件覆盖保存控制設定);
                record += "6.FOR,";
            }
        }
예제 #10
0
        /// <summary>
        /// 設定存檔
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripbtnSet_Click(object sender, EventArgs e)
        {
            string cmd = string.Empty, response = string.Empty, record = string.Empty;

            toolStripbtnSet.Enabled   = false;
            toolStripbtnPoint.Enabled = true;
            try
            {
                // 異動紀錄
                AddRecChangeMethod("手動流程:雷射設定存檔");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            if (GlobalParameter.UseMode.Equals("0"))
            {
                MessageBox.Show("測試模式,無法設定存檔。"); return;
            }

            // 驗證資料
            List <string> parameter = new List <string> {
                { cbBoxPartNo.Text }, { lblFNO.Text }, { lblPower.Text }, { lblSpeed.Text }
            };

            response = ValidateUtility.CheckParameter(parameter);
            if (ValidateUtility.DisplayMessage(response))
            {
                return;
            }

            // 板子計算方式
            PieceResultModel pieceResultModel = new PieceCalculationMethod()
                                                .PieceCalculation(new PieceRequestModel
            {
                板子X尺寸     = Convert.ToDouble(partNoJoinLaser[0].PieceSizeX),
                板子Y尺寸     = Convert.ToDouble(partNoJoinLaser[0].PieceSizeY),
                X偏移位置     = Convert.ToDouble(lblXoffset.Text),
                Y偏移位置     = Convert.ToDouble(lblYoffset.Text),
                台與雷射中心點差距 = GlobalParameter.VehicleAndPieceCenter
            });

            #region PLC寫入

            try
            {
                if (!GlobalData.PLC線路異常)
                {
                    List <string> data = new List <string>();
                    PLCMethod.SetParameterSplitForPoint(partNoJoinLaser[0].PieceSizeX, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinLaser[0].PieceSizeY, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinLaser[0].PieceSizeT, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinLaser[0].PositionX2D, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinLaser[0].PositionY2D, data);
                    PLCMethod.SetDefultParameter("0", 20, data);
                    PLCMethod.SetParameterSplit(dataTray.TrayNo.ToString(), data);
                    PLCMethod.SetParameterSplit(dataTray.DivideNoX.ToString(), data);
                    PLCMethod.SetParameterSplit(dataTray.DivideNoY.ToString(), data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.DividePitchX, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.DividePitchY, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.PieceCenterX, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.PieceCenterY, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.TrayThickness, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.TrayCenter, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.TrayLength, data);
                    PLCMethod.SetDefultParameter("0", 10, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.TrayOffsetX, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.TrayOffsetY, data);
                    PLCMethod.SetDefultParameter("0", 6, data);
                    PLCcommand.PLC_Write(PLCcommand.Cmd_Mode.Mode_Write_Multiple,
                                         PLCcommand.PLC_IO.DM, DmTable.DM_8300DWORD_板寬X, 0, data.Count, data);
                }
                else
                {
                    MessageBox.Show("PLC線路異常。");
                    return;
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception錯誤");
                MessageBox.Show("Exception_PLC系統異常錯誤:" + ex.Message);
                return;
            }

            #endregion PLC寫入

            #region 雷射寫入

            try
            {
                if (SHT遮光閥狀態.Equals("1"))
                {
                    cmd      = LaserCommand.MKM指令接收控制設定("0");
                    response = LaserExecuteWrite.執行MRK印字觸控制設定(cmd);
                    if (ValidateUtility.DisplayMessage(response))
                    {
                        return;
                    }
                    SHT遮光閥狀態 = "0";
                    record  += "1.SHT,";
                }

                // 設定 FNO
                cmd      = LaserCommand.FNO文件變更控制設定(lblFNO.Text);
                response = LaserExecuteWrite.執行FNO文件變更控制設定(cmd);
                if (ValidateUtility.DisplayMessage(response))
                {
                    return;
                }
                record += "2.FNO,";

                // 雷射功率
                cmd = LaserCommand.LPW激光功率控制設定(string.Format("{0:000.0}",
                                                             Convert.ToInt32(lblPower.Text)));
                response = LaserExecuteWrite.執行LPW激光功率控制設定(cmd);
                if (ValidateUtility.DisplayMessage(response))
                {
                    return;
                }
                record += "3.LPW,";

                // 掃描速度
                cmd = LaserCommand.SSP掃描速度控制設定(string.Format("{0:00000}",
                                                             Convert.ToInt32(lblSpeed.Text)));
                response = LaserExecuteWrite.執行SSP掃描速度控制設定(cmd);
                if (ValidateUtility.DisplayMessage(response))
                {
                    return;
                }
                record += "4.SSP,";

                // 設定座標位置
                List <double> list = new List <double> {
                    { pieceResultModel.X位置 }, { pieceResultModel.Y位置 }
                };
                List <string> laserList = TypeMethod.SetFormatValue(list, "{0:000.000}");
                ModelSPC      modelSPC  = new ModelSPC
                {
                    SonCmd    = "S",
                    Xposition = laserList[0],
                    Yposition = laserList[1]
                };
                cmd      = LaserCommand.SPC文字條件控制設定(modelSPC);
                response = LaserExecuteWrite.執行SPC文字條件控制設定(cmd);
                if (ValidateUtility.DisplayMessage(response))
                {
                    return;
                }
                record += "5.SPC,";

                // 雷射參數儲存
                LaserExecuteWrite.執行FOR文件覆盖保存控制設定(LaserCommand.FOR文件覆盖保存控制設定);
                record += "6.FOR,";

                // DB資料寫入
                IDataLaserService dataLaserService = new DataLaserService();
                ResponseModel     ResponseModel    = dataLaserService.UpdateData(new DataLaser
                {
                    PartNo  = cbBoxPartNo.Text,
                    FnoNo   = lblFNO.Text,
                    Xoffset = lblXoffset.Text,
                    Yoffset = lblYoffset.Text,
                    Power   = lblPower.Text,
                    Speed   = lblSpeed.Text
                });
                if (ResponseModel.Status.Equals(StatusEnum.Error))
                {
                    logger.Error(ResponseModel.ResponseMsg);
                    MessageBox.Show(ResponseModel.ResponseMsg);
                    return;
                }
                record += "7.DB";

                if (!ValidateUtility.DisplayMessage(response))
                {
                    MessageBox.Show("設定完成,執行紀錄:" + record);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception_Error:" + record);
                MessageBox.Show("Exception_雷射系統異常錯誤:" + ex.Message + ",執行紀錄:" + record);
            }

            #endregion 雷射寫入
        }
 protected override void handle_result(TypeMethod result)
 {
     top.value.Add(result);
 }
            protected override void handle_result(TypeMethod result)
            {
//@@@        Debug.Assert(!have_value);
                have_value = true;
                value      = result;
            }
 protected abstract void handle_result(TypeMethod result);
 public void setMethod(TypeMethod new_value)
 {
     flagHasMethod = true;
     storeMethod   = new_value;
 }
예제 #15
0
        /// <summary>
        /// 條碼讀取器-讀取/寫入Hioki
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnReadWrite_Click(object sender, EventArgs e)
        {
            try
            {
                // 異動紀錄
                AddRecChangeMethod("手動流程:條碼讀取並寫入Hioki機台");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            if (GlobalParameter.UseMode.Equals("0"))
            {
                MessageBox.Show("測試模式,無法讀取。"); return;
            }
            try
            {
                string readCode = readerAccessor.ExecCommand("LON", 8000);
                lblText.Text = readCode;
                if (string.IsNullOrEmpty(readCode))
                {
                    readerAccessor.ExecCommand("LOFF");
                    MessageBox.Show("讀取錯誤,請檢查讀取器或材料是否有異常。");
                    return;
                }

                string xmlString = "<?xml version='1.0' encoding='UTF-8'?>"
                                   + "<COMMAND>"
                                   + "<COM_NUM>11</COM_NUM>"
                                   + "<INFORMATION>"
                                   + "<ID>" + readCode + "</ID>"
                                   + "</INFORMATION>"
                                   + "</COMMAND>";
                socket.SendTimeout    = 10000;
                socket.ReceiveTimeout = 5000;

                // 送出XML
                XmlDocument doc = new XmlDocument();
                doc.InnerXml = xmlString;
                Byte[] sendBuf = Encoding.UTF8.GetBytes(doc.OuterXml);
                socket.Send(sendBuf, sendBuf.Length, SocketFlags.None);

                // 回傳XML
                Byte[] recvBuf = new Byte[0x40000];
                for (Int32 i = 0; i < recvBuf.Length; i++)
                {
                    recvBuf[i] = 0;
                }
                socket.Receive(recvBuf, 0, recvBuf.Length, SocketFlags.None);

                // 取得子節點參數,正確:0、錯誤:1
                XElement xmlroot = XElement.Parse(TypeMethod.FormtXmlDoc(Encoding.UTF8.GetString(recvBuf)));
                string   error   = ((XElement)(xmlroot.Element("ERROR"))).Value;
                MessageBox.Show(error.Equals("0") ? "寫入成功" : "寫入失敗");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Exception錯誤:" + ex.Message);
            }
        }