using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using gregn6Lib; using Pub_Class; using System.Threading; using System.IO.Ports; namespace SCM { public partial class Sc_PackUnionBill : Form { public Sc_PackUnionBill() { InitializeComponent(); } public frmBillQueryCondition_Base frmCondition; public string ModCaption = "包装单"; public string ModName = "Sc_PackUnionBill"; public Int64 HInterID = 0; //单据ID public string HBillNo = ""; //单据号 public string HBillType = "3783"; //单据类型 public string HMaker = ""; //制单人 public string HSourceBillTypeID = ""; public string HSourceBillType = ""; public string HSourceBillNo = ""; public Int64 HSourceInterID = 0; public Int64 HSourceEntryID = 0; public int HTMCol = 0; public int HMaterIDCol = 1; public string HOrgNumber = "1001"; public Int64 HOrgID = 1; public string HBarCode = ""; public Model.ClsSc_PackUnionBillMain omodel = new Model.ClsSc_PackUnionBillMain(); Pub_Class.ClsGridListSum oSumGrid = new Pub_Class.ClsGridListSum(); public Int32 iTopRow = 0;//画横线 SCM.WMSWeb.WebService1 oWeb = new SCM.WMSWeb.WebService1(); private static string repeatData = string.Empty; // #region 固定代码 //清空界面 public void Sub_ClearBill() { //清空界面 ClsPub1.Sub_ClearBill(groupBox4); ClsPub1.Sub_ClearBill1(tabPage3); ClsPub1.Sub_ClearBill1(tabPage1); ClsPub1.Sub_ClearBill1(tabPage4); //从服务器 获得单据号ID和单据号 string s = ""; if (oWeb.get_MaxBillNoAndID(HBillType, ref HBillNo, ref HInterID, ref s)) { txtHBillNo.Tag = HInterID.ToString(); txtHBillNo.Text = HBillNo; } else { MessageBox.Show("得到单据号失败!" + s); this.Close(); } // HMaker = DBUtility.ClsPub.CurUserName; txtHMaker.Text = HMaker; HOrgID = ClsPub1.HOrgID; DataSet Ds1 = oWeb.getDataSetBySQL("select * from Xt_ORGANIZATIONS with(nolock) where HItemID=" + HOrgID, "Xt_ORGANIZATIONS", ref DBUtility.ClsPub.sExeReturnInfo); if (Ds1.Tables[0].Rows.Count != 0) { HOrgNumber = DBUtility.ClsPub.isStrNull(Ds1.Tables[0].Rows[0]["HNumber"]); txtHOWNERID.Tag = HOrgID; txtHOWNERID.Text = DBUtility.ClsPub.isStrNull(Ds1.Tables[0].Rows[0]["HName"]); } initGrid(); //刷新表体 DisBillEntryList_Webs(); } private void Sc_PackUnionBill_Load(object sender, EventArgs e) { //设置动态URL oWeb.Url = SCM.ClsPub1.WEBSURL; // frmCondition = new frmBillQueryCondition_Base(); this.Text = ModCaption; oSumGrid.ogrdMain = grdMain; //初始化 new oSumGrid.oGridsum = grdSum; initGrid(); cmbDYMB.Items.Add(this.Text); cmbDYMB.SelectedIndex = 0; } //初始化网格 private void initGrid() { ClsPub1.initGridList(grdMain, this.Name); grdMain.RowTemplate.Height = 30; grdMain.RowTemplate.MinimumHeight = 30; grdMain.RowsDefaultCellStyle.Font = new Font("宋体", 15); grdMain.ReadOnly = true; //DBUtility.Xt_BaseBillFun.initGridList(grdMain, this.Name); } //时间控件 private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled=false; Sub_ClearBill(); } private void timer2_Tick(object sender, EventArgs e) { timer2.Enabled = false; // if (ClsIni.ReadIni("COMINFO", "txtPortName", DBUtility.ClsPub.AppPath + @"/HXERP.ini").Contains("没有找到")==false) { txtPortName.Text = ClsIni.ReadIni("COMINFO", "txtPortName", DBUtility.ClsPub.AppPath + @"/HXERP.ini"); txtBaudRate.Text = ClsIni.ReadIni("COMINFO", "txtBaudRate", DBUtility.ClsPub.AppPath + @"/HXERP.ini"); cmbParity.Text = ClsIni.ReadIni("COMINFO", "cmbParity", DBUtility.ClsPub.AppPath + @"/HXERP.ini"); txtDataBits.Text = ClsIni.ReadIni("COMINFO", "txtDataBits", DBUtility.ClsPub.AppPath + @"/HXERP.ini"); cmbStopBits.Text = ClsIni.ReadIni("COMINFO", "cmbStopBits", DBUtility.ClsPub.AppPath + @"/HXERP.ini"); txtHSend0.Text = ClsIni.ReadIni("COMINFO", "txtHSend0", DBUtility.ClsPub.AppPath + @"/HXERP.ini"); txtHSend.Text = ClsIni.ReadIni("COMINFO", "txtHSend", DBUtility.ClsPub.AppPath + @"/HXERP.ini"); } //初始化串口 ComDevice = new SerialPort(); ComDevice.DataReceived += new SerialDataReceivedEventHandler(Com_DataReceived);//绑定事件 string[] PortNames = SerialPort.GetPortNames(); //打开串口 OpenCom(); } private void grdMain_Paint(object sender, PaintEventArgs e) { GraphicsGrid(); } private void GraphicsGrid() { //画底线 DBUtility.Xt_BaseBillFun.GraphicsGrid(grdMain); //画横线 DBUtility.Xt_BaseBillFun.GraphicsRowGrid(grdMain, iTopRow, iTopRow + 50, Fun_GetCol("hmainid")); } private Int32 Fun_GetCol(string sCol) { return DBUtility.Xt_BaseBillFun.Fun_GetCol(sCol, grdMain); } //保存列宽 private void bclk_Click(object sender, EventArgs e) { DBUtility.Xt_BaseBillFun.SaveGrid(grdMain, this.Name); } //默认列宽 private void mrlk_Click(object sender, EventArgs e) { DBUtility.Xt_BaseBillFun.DefaultGridView(grdMain, this.Name); } //是否是空行 private bool IsNullRow(int Row) { return DBUtility.Xt_BaseBillFun.IsNullRow(Row, HMaterIDCol, grdMain); } #endregion #region 功能控件 //退出 private void cmdCancel_Click(object sender, EventArgs e) { CloseCom(); this.Close(); } //新增 private void cmdHAdd_Click(object sender, EventArgs e) { Sub_ClearBill();//清空界面 } //保存 并生成打印条码 private void cmdHSaveBill_Click(object sender, EventArgs e) { //判断是否数据完整 if (AllowLoadData() == false) { return; } SaveBill(); } //上传前判断 private bool AllowLoadData() { if (HInterID == 0) { MessageBox.Show("错误的单据内码!"); return false; } if (txtHBillNo.Text.Trim() == "") { MessageBox.Show("错误的单据号!"); return false; } //判断是否存在数量0的明细记录 (至少 扫描一条记录) bool b = false; for (int i = 0; i < grdMain.RowCount; i++) { if (ClsPub.isDoule(grdMain.Rows[i].Cells["数量"].Value) == 0) { b = false; } else { b = true; break; } } if (!b) { MessageBox.Show("没有子件条码扫描记录!"); return false; } return true; } //写入包装单、条码档案 public bool SaveBill() { try { //判断会计期是否合理 string s = ""; int sYear = 0; int sPeriod = 0; //if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(dtpHDate.Value, ref sYear, ref sPeriod, ref s) == false) //{ // MessageBox.Show(s, "提示"); // return false; //} omodel.HYear = sYear; omodel.HPeriod = sPeriod; omodel.HInterID = HInterID; omodel.HDate = dtpHDate.Value; omodel.HBillNo = HBillNo; omodel.HRemark = ""; omodel.HICMOInterID = ClsPub.isLong(this.txtHSourceBillNo.Tag); omodel.HICMOBillNo = ClsPub.isStrNull(this.txtHSourceBillNo.Text); omodel.HBarCode_Pack = ClsPub.isStrNull(this.txHBarCode_Pack.Text); omodel.HMaterID = 0; omodel.HUnitID = 0; omodel.HWeight = ClsPub.isSingle(this.txtHWeight.Text); omodel.HPWeight = ClsPub.isSingle(this.txtHPWeight.Text); omodel.HProdOrgID = ClsPub.isLong(this.txtHOWNERID.Tag); omodel.HDeptID = ClsPub.isLong(this.txtHDeptID.Tag); omodel.HEmpID = ClsPub.isLong(this.txtHEmpID.Tag); //插入主表 oWeb.getRunProc("Insert Into Sc_PackUnionBillMain " + "(HYear,HPeriod,HBillType,HInterID" + ",HDate,HBillNo,HBillStatus,HRemark,HICMOInterID" + ",HICMOBillNo,HBarCode_Pack,HMaterID,HUnitID" + ",HWeight,HPWeight,HProdOrgID,HDeptID,HEmpID" + ",HMaker,HMakeDate" + ") " + " values(" + omodel.HYear + "," + omodel.HPeriod + ",'" + this.HBillType + "'," + omodel.HInterID + ",'" + omodel.HDate + "','" + omodel.HBillNo.ToString() + "'," + omodel.HBillStatus + ",'" + omodel.HRemark + "'," + omodel.HICMOInterID + ",'" + omodel.HICMOBillNo.ToString() + "','" + omodel.HBarCode_Pack.ToString() + "'," + omodel.HMaterID + "," + omodel.HUnitID + ", " + omodel.HWeight + "," + omodel.HPWeight + "," + omodel.HProdOrgID + "," + omodel.HDeptID + "," + omodel.HEmpID + ",'" + DBUtility.ClsPub.CurUserName + "','" + DBUtility.ClsPub.GetServerDate(-1) + "'" + ") ", ref DBUtility.ClsPub.sExeReturnInfo); //插入子表 oWeb.getRunProc("EXEC h_p_Sc_PackUnionBillSub_Insert " + omodel.HInterID + ",'" + omodel.HBillNo.ToString() + "'", ref DBUtility.ClsPub.sExeReturnInfo); //将托条码写入条码档案 string TM = ""; //条码 double HQty = DBUtility.ClsPub.isDoule(txtHWeight.Text); //数量 string sDate = ""; //日期 // string HWei = ""; //尾数 HBarCode = ""; string HBarCodeType = ""; Int64 HMaterID = 0; Int64 HAuxPropID = 0; Int64 HUnitID = 0; double HQty2 = DBUtility.ClsPub.isDoule(txtHWeight.Text); string HBatchNo2 = ""; Int64 HSupID = 0; Int64 HGroupID = 0; int HPrintQty = 0; Int64 HBarcodeNo = 0; //托号 Int64 HBarcodeQtys = 0; //总托数 Int64 HDeptID = 0; Int64 HWhID = 0; Int64 HSPID = 0; string HRemark = ""; string HMaterName = ""; string HMaterModel = ""; string HPinfan = ""; string HMTONo = ""; Int64 HCusID = 0; string HCusType = ""; DateTime HEndDate; string HWorkLineName = ""; DateTime HBeginDate; string HSeOrderBillNo = ""; string HJiaYe2 = ""; string HPressModel = ""; string HCusModel = ""; string HMaterialModel = ""; string HColor = ""; string HLogo = ""; string HPackageSize = ""; double HMaterialJQty = DBUtility.ClsPub.isDoule(txtHWeight.Text); double HMaterialMQty = DBUtility.ClsPub.isDoule(lblHBWeight.Text); string HCustomBatchNo = ""; string HGBBarCode = ""; string POOrderBillNo = ""; // HBarCode = txHBarCode_Pack.Text; HBarCodeType = "托盘条码"; HMaterID = 0; HAuxPropID = 0; //HUnitID = DBUtility.ClsPub.isLong(txtHUnitName.Tag); HQty2 = HQty; HBatchNo2 = ""; HBarcodeQtys = 0; HBarcodeNo = 1; HSupID = 0; HDeptID = 0; HWhID = 0; HSPID = 0; HRemark = ""; HMaterName = ""; HMaterModel = ""; HPinfan = ""; HMTONo = ""; HCusID = 0; HCusType = ""; HEndDate = dtpHDate.Value; HWorkLineName = ""; HBeginDate = dtpHDate.Value; HSeOrderBillNo = ""; HGroupID = 0; HJiaYe2 = ""; HPressModel = ""; HCusModel = ""; HMaterialModel = ""; HColor = ""; HLogo = ""; HPackageSize = ""; HMaterialJQty = DBUtility.ClsPub.isDoule(txtHWeight.Text); HMaterialMQty = DBUtility.ClsPub.isDoule(lblHBWeight.Text); HCustomBatchNo = ""; HGBBarCode = ""; POOrderBillNo = ""; string sSQLMul = " insert into Gy_BarCodeBill (HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" + ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" + ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " + ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " + ",HCusID,HCusType,HEndDate,HWorkLineName,HJiaYe " + ",HPressModel,HCusModel,HMaterialModel,HColor,HBarCodeDate " + ",HLogo,HPackageSize,HMaterialJQty,HMaterialMQty,HCustomBatchNo " + ",HSTOCKORGID,HOWNERID,HBeginDate,HSeOrderBillNo,HGBBarCode " + ",POOrderBillNo " + ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo " + ") values (" + "'" + HBarCode + "','" + HBarCodeType + "'," + HMaterID.ToString() + "," + HUnitID.ToString() + "," + HQty2.ToString() + ",'" + HBatchNo2 + "'," + HSupID.ToString() + "," + HGroupID.ToString() + ",'" + ClsPub.CurUserName + "',getdate()," + HPrintQty.ToString() + "," + HQty2.ToString() + ", " + HSourceInterID.ToString() + "," + HSourceEntryID.ToString() + ",'" + HSourceBillNo + "','" + HSourceBillTypeID + "','" + HWei + "'" + ", " + HBarcodeQtys.ToString() + "," + HBarcodeNo.ToString() + "," + HDeptID.ToString() + "," + HWhID.ToString() + "," + HSPID.ToString() + ",'" + HRemark + "'" + ", " + HCusID.ToString() + ",'" + HCusType + "','" + HEndDate.ToShortDateString() + "','" + HWorkLineName + "','" + HJiaYe2 + "'" + ",'" + HPressModel + "','" + HCusModel + "','" + HMaterialModel + "','" + HColor + "','" + sDate + "'" + ",'" + HLogo + "','" + HPackageSize + "'," + HMaterialJQty.ToString() + "," + HMaterialMQty.ToString() + ",'" + HCustomBatchNo + "'" + ", " + HOrgID.ToString() + "," + HOrgID.ToString() + ",'" + HBeginDate.ToShortDateString() + "','" + HSeOrderBillNo + "','" + HGBBarCode + "'" + ",'" + POOrderBillNo + "'" + ",'" + HMaterName + "','" + HMaterModel + "','" + HPinfan + "'," + HAuxPropID.ToString() + ",'" + HMTONo + "')"; oWeb.getRunProc(sSQLMul, ref DBUtility.ClsPub.sExeReturnInfo); //刷新界面 DisBillEntryList_Webs(); //DisplaySub(); //根据界面选择打印模板,打印条形码 Sub_SetReport(cmbDYMB.Text); Report.PrintPreview(false); Thread.Sleep(500); cmdHSaveBill.Enabled = false; return true; } catch (Exception e1) { MessageBox.Show("保存失败!" + e1.Message); cmdHSaveBill.Enabled = true; return false; } } #region //打印设置 GridppReport Report; string sBarCode = ""; //预览 int CurRows = 0; private void Sub_SetReport(string sOpenTmp) { //判断行数 Report = new GridppReport(); Report.LoadFromFile(DBUtility.ClsPub.AppPath + @"\" + sOpenTmp + ".grf"); //here . Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord); Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable); //Report.PrintEnd += new _IGridppReportEvents_PrintEndEventHandler(ReportPrintEnd); } //填入单据表头信息 private void ReportBeforePostRecord()// { try { Report.FieldByName("条码编号").AsString = ClsPub.isStrNull(txHBarCode_Pack.Text); } catch (Exception e) { MessageBox.Show("打印失败!表头:" + e.Message); } } private void ReportFetchRecordByDataTable() { try { DataTable ds = new DataTable(); BLL.Utility.FillRecordToReport_FstRow(Report, grdMain, ds, 0); } catch (Exception e) { MessageBox.Show("打印失败!表体:" + e.Message); } } #endregion //删行 private void btnBLSH_Click(object sender, EventArgs e) { } //清空 private void btnBLBD_Click(object sender, EventArgs e) { } #endregion #region 扫描源单条码、子件条码 //扫描源单 private void txtHMSourceBillNo_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) { //明细表是否为零行 bool b = false; for (int i = 0; i < grdMain.RowCount; i++) { if (!IsNullRow(i)) { b = true; break; } } if (b == true) { if (MessageBox.Show("已存在源单记录,确定要清空重新扫码?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { SetBillTilte_Webs(); txtHZBarCode.Focus(); } } else { SetBillTilte_Webs(); txtHZBarCode.Focus(); } } } private void SetBillTilte_Webs() { string sTMNumber = ""; //条码自定义前缀 int LSH = 0; //流水号 HSourceBillNo = txtHMSourceBillNo.Text.Trim(); HSourceBillType = "3710"; //获取源单信息,并将源单信息存入临时表 DataSet DS = oWeb.getDataSetBySQL("exec h_p_IF_SourceBill_Check_Add_PackUnion " + HInterID + ",'" + HBillNo + "','" + HBillType + "','" + HSourceBillNo + "','" + HSourceBillType + "','" + HMaker + "'", "h_p_IF_SourceBill_Check_Add_PackUnion", ref DBUtility.ClsPub.sExeReturnInfo); if (DBUtility.ClsPub.isLong(DS.Tables[0].Rows[0][0]) == 0) { txtHSourceBillNo.Text = HSourceBillNo; //获取托条码 //条码前缀 = 组织代码 + 源单单号 sTMNumber = HOrgNumber + DBUtility.ClsPub.isStrNull(txtHSourceBillNo.Text); DataSet Ds2 = oWeb.getDataSetBySQL("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo", ref DBUtility.ClsPub.sExeReturnInfo);//获取最大流水号 LSH = ClsPub.isInt(Ds2.Tables[0].Rows[0][0]); //托条码 = 条码前缀 + 流水号 txHBarCode_Pack.Text = sTMNumber + LSH; // string sSQLNoMul = " exec h_p_WMS_SetMaxNo '" + sTMNumber + "' "; oWeb.getRunProc(sSQLNoMul, ref DBUtility.ClsPub.sExeReturnInfo); } else { MessageBox.Show(DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0]["HRemark"]) + "," + DBUtility.ClsPub.sExeReturnInfo); return; } //刷新表体 DisBillEntryList_Webs(); } //扫描子件条码 private void txtHZBarCode_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) { SetZBarCode_Webs(txtHZBarCode.Text); txtHZBarCode.Text = ""; txtHZBarCode.Focus(); } } private void SetZBarCode_Webs(string sZCode) { //将子件条码信息存入临时表 DataSet DS = oWeb.getDataSetBySQL("exec h_p_KF_PonderationBillMain_Temp_Add_PackUnion " + HInterID + ",'" + HBillNo + "','" + HBillType + "','" + HMaker + "','" + sZCode + "','" + txHBarCode_Pack.Text + "'," + HOrgID, "h_p_KF_PonderationBillMain_Temp_Add_PackUnion", ref DBUtility.ClsPub.sExeReturnInfo); if (DBUtility.ClsPub.isLong(DS.Tables[0].Rows[0][0]) == 0) { //刷新表体 DisBillEntryList_Webs(); } else { MessageBox.Show(DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0]["HRemark"]) + "," + DBUtility.ClsPub.sExeReturnInfo); return; } } //刷新子表 private void DisBillEntryList_Webs() { //得到信息 DataSet DSet = oWeb.getDataSetBySQL("exec h_p_KF_GetPonderationBillMain_TempList_PackUnion " + HInterID + ",'" + HBillNo + "','" + HBillType + "'", "h_p_KF_GetPonderationBillMain_TempList_PackUnion", ref DBUtility.ClsPub.sExeReturnInfo); //生成首行标题 if (DSet == null) { return; } // grdMain.DataSource = DSet.Tables[0].DefaultView; ////设置合计列 //string sTotalCol = ""; //sTotalCol = DBUtility.Gy_BaseFun.GetTotalCols(DSet); //string[] sT; //sT = sTotalCol.Split(Convert.ToChar(",")); //oSumGrid.BuildTotalCols(sT); //冻结 int FrCol = DBUtility.ClsPub.isInt(frmCondition.txtFrozenCol.Text); string s = frmCondition.cmbHComplete.Text; ClsPub1.DisplayGrid(grdMain, this.Name, s, FrCol); //画线 //GraphLine(); //Total(); } #endregion #region 界面基础资料控件处理 //班组 private void cmdHGroupID_Click(object sender, EventArgs e) { SCM.ClsGy_Group_View oGroup = new SCM.ClsGy_Group_View(); string sWhere = ""; if (oGroup.RefreshView(sWhere)) { this.txtHGroupID.Text = oGroup.oModel.HName; this.txtHGroupID.Tag = oGroup.oModel.HItemID.ToString(); } else { this.txtHGroupID.Text = ""; } } private void txtHGroupID_TextChanged(object sender, EventArgs e) { BLL.ClsPub_BLL.Sub_ClearText(txtHGroupID); } //生产资源 private void cmdHSourceID_Click(object sender, EventArgs e) { SCM.ClsIF_Source_View oSource = new SCM.ClsIF_Source_View(); string sWhere = ""; if (oSource.RefreshView(sWhere)) { this.txtHSourceID.Text = oSource.oModel.HName; this.txtHSourceID.Tag = oSource.oModel.HItemID.ToString(); } else { this.txtHSourceID.Text = ""; } } private void txtHSourceID_TextChanged(object sender, EventArgs e) { BLL.ClsPub_BLL.Sub_ClearText(txtHSourceID); } //工序 private void cmdHProcessID_Click(object sender, EventArgs e) { SCM.ClsIF_Process_View oProcess = new SCM.ClsIF_Process_View(); string sWhere = ""; if (oProcess.RefreshView(sWhere)) { this.txtHProcessID.Text = oProcess.oModel.HName; this.txtHProcessID.Tag = oProcess.oModel.HItemID.ToString(); } else { this.txtHProcessID.Text = ""; } } private void txtHProcessID_TextChanged(object sender, EventArgs e) { BLL.ClsPub_BLL.Sub_ClearText(txtHProcessID); } //车间 private void cmdHDeptID_Click(object sender, EventArgs e) { SCM.ClsIF_Department_View oDept = new SCM.ClsIF_Department_View(); string sWhere = ""; if (oDept.RefreshView(sWhere)) { this.txtHDeptID.Text = oDept.oModel.HName; this.txtHDeptID.Tag = oDept.oModel.HItemID.ToString(); } else { this.txtHDeptID.Text = ""; } } private void txtHDeptID_TextChanged(object sender, EventArgs e) { BLL.ClsPub_BLL.Sub_ClearText(txtHDeptID); } //操作员 private void cmdHEmpID_Click(object sender, EventArgs e) { SCM.ClsIF_Employee_View oEmp = new SCM.ClsIF_Employee_View(); string sWhere = ""; if (oEmp.RefreshView(sWhere)) { this.txtHEmpID.Text = oEmp.oModel.HName; this.txtHEmpID.Tag = oEmp.oModel.HItemID.ToString(); } else { this.txtHEmpID.Text = ""; } } private void txtHEmpID_TextChanged(object sender, EventArgs e) { BLL.ClsPub_BLL.Sub_ClearText(txtHEmpID); } //工作中心 private void cmdHWorkCenterID_Click(object sender, EventArgs e) { SCM.ClsIF_WorkCenter_View oWorkCenter = new SCM.ClsIF_WorkCenter_View(); string sWhere = ""; if (oWorkCenter.RefreshView(sWhere)) { this.txtHWorkCenterID.Text = oWorkCenter.oModel.HName; this.txtHWorkCenterID.Tag = oWorkCenter.oModel.HItemID.ToString(); } else { this.txtHWorkCenterID.Text = ""; } } private void txtHWorkCenterID_TextChanged(object sender, EventArgs e) { BLL.ClsPub_BLL.Sub_ClearText(txtHWorkCenterID); } //组织 private void cmdHOWNERID_Click(object sender, EventArgs e) { SCM.ClsXt_ORGANIZATIONS_View oOR = new SCM.ClsXt_ORGANIZATIONS_View(); string sWhere = ""; if (oOR.RefreshView(sWhere)) { this.txtHOWNERID.Text = oOR.oModel.HName; this.txtHOWNERID.Tag = oOR.oModel.HItemID.ToString(); HOrgID = oOR.oModel.HItemID; HOrgNumber = oOR.oModel.HNumber; } else { this.txtHOWNERID.Text = ""; } } private void txtHOWNERID_TextChanged(object sender, EventArgs e) { BLL.ClsPub_BLL.Sub_ClearText(txtHOWNERID); } #endregion private SerialPort ComDevice = null; //打开串口 private void cmdOpenCom_Click(object sender, EventArgs e) { OpenCom(); } public void OpenCom() { if (!ComDevice.IsOpen) { try { ComDevice.PortName = txtPortName.Text; ComDevice.BaudRate = int.Parse(txtBaudRate.Text); switch (cmbParity.SelectedItem.ToString()) { case "0": ComDevice.Parity = Parity.None; break; case "1": ComDevice.Parity = Parity.Odd; break; case "2": ComDevice.Parity = Parity.Even; break; case "3": ComDevice.Parity = Parity.Mark; break; case "4": ComDevice.Parity = Parity.Space; break; default: break; } ComDevice.DataBits = int.Parse(txtDataBits.Text); switch (cmbStopBits.SelectedItem.ToString()) { case "0": ComDevice.StopBits = StopBits.None; break; case "1": ComDevice.StopBits = StopBits.One; break; case "2": ComDevice.StopBits = StopBits.Two; break; case "1.5": ComDevice.StopBits = StopBits.OnePointFive; break; default: break; } ComDevice.Open(); lblComStatus.Text = "串口状态:开启"; timer3.Enabled = true; } catch (Exception ex) { MessageBox.Show("打开串口失败!" + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } else { //try //{ // ComDevice.Close(); // textBox3.Enabled = true; // textBox4.Enabled = true; // textBox5.Enabled = true; // comboBox1.Enabled = true; // comboBox2.Enabled = true; // AddContent($"串口已关闭"); // button1.Enabled = false; // btnPush.Text = "开启串口"; //} //catch (Exception ex) //{ // MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); // AddContent($"串口关闭失败:{ex.Message}"); // return; //} } } //关闭串口 private void cmdCloseCom_Click(object sender, EventArgs e) { CloseCom(); } public void CloseCom() { if (!ComDevice.IsOpen) { } else { try { ComDevice.Close(); lblComStatus.Text = "串口状态:关闭"; timer3.Enabled = false; } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } /// /// 字符串转换16进制字节数组 /// /// /// private byte[] strToHexByte(string hexString) { hexString = hexString.Replace(" ", ""); if ((hexString.Length % 2) != 0) hexString += " "; byte[] returnBytes = new byte[hexString.Length / 2]; for (int i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2).Replace(" ", ""), 16); return returnBytes; } /// /// 发送数据 /// /// /// public bool SendData(byte[] data) { if (ComDevice.IsOpen) { try { ComDevice.Write(data, 0, data.Length);//发送数据 return true; } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { //cmdHSetZero.Enabled = true; } } else { MessageBox.Show("串口未打开", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } return false; } private void timer3_Tick(object sender, EventArgs e) { //if (!ComDevice.IsOpen) //{ // return; //} //byte[] sendData = strToHexByte(txtHSend.Text); //SendData(sendData); } /// /// 接收数据 /// /// /// private void Com_DataReceived(object sender, SerialDataReceivedEventArgs e) { //if (!ComDevice.IsOpen) //{ // return; //} //Thread.Sleep(100); byte[] ReDatas = new byte[ComDevice.BytesToRead]; ComDevice.Read(ReDatas, 0, ReDatas.Length);//读取数据 this.AddData(ReDatas);//输出数据 } /// /// 添加数据 /// /// 字节数组 public void AddData(byte[] data) { //Thread.Sleep(100); StringBuilder sb = new StringBuilder(); sb.Append(Encoding.ASCII.GetString(data)); var str = sb.ToString().ToUpper(); if (str != repeatData) { repeatData = str; var newStr = new StringBuilder(); var strArray = str.ToCharArray(); for (int i = 0; i < strArray.Length; i++) { var charStr = strArray[i]; if (charStr == '+' || charStr == ' ' || charStr == 'K' || charStr == 'G') continue; newStr.Append(strArray[i]); } double ret = 0; if (double.TryParse(newStr.ToString(), out ret))//判断是否是数字 { //AddContent($"接收数据-{DateTime.Now}:{newStr.ToString()}"); lblHBWeight.Text = newStr.ToString(); txtHWeight.Text = DBUtility.ClsPub.isDoule(DBUtility.ClsPub.isDoule(lblHBWeight.Text) - DBUtility.ClsPub.isDoule(txtHPWeight.Text), 2); } } } //保存参数 private void cmdHSaveInfo_Click(object sender, EventArgs e) { ClsIni.WriteIni("COMINFO", "txtPortName", DBUtility.ClsPub.isStrNull(txtPortName.Text), DBUtility.ClsPub.AppPath + @"/HXERP.ini"); ClsIni.WriteIni("COMINFO", "txtBaudRate", DBUtility.ClsPub.isStrNull(txtBaudRate.Text), DBUtility.ClsPub.AppPath + @"/HXERP.ini"); ClsIni.WriteIni("COMINFO", "cmbParity", DBUtility.ClsPub.isStrNull(cmbParity.Text), DBUtility.ClsPub.AppPath + @"/HXERP.ini"); ClsIni.WriteIni("COMINFO", "txtDataBits", DBUtility.ClsPub.isStrNull(txtDataBits.Text), DBUtility.ClsPub.AppPath + @"/HXERP.ini"); ClsIni.WriteIni("COMINFO", "cmbStopBits", DBUtility.ClsPub.isStrNull(cmbStopBits.Text), DBUtility.ClsPub.AppPath + @"/HXERP.ini"); ClsIni.WriteIni("COMINFO", "txtHSend0", DBUtility.ClsPub.isStrNull(txtHSend0.Text), DBUtility.ClsPub.AppPath + @"/HXERP.ini"); ClsIni.WriteIni("COMINFO", "txtHSend", DBUtility.ClsPub.isStrNull(txtHSend.Text), DBUtility.ClsPub.AppPath + @"/HXERP.ini"); } } }