private void MainForm_Load(object sender, EventArgs e) { this.resultTextBox.ForeColor = System.Drawing.Color.Red; selectCameraVersion.Items.Add("全景"); selectCameraVersion.Items.Add("其他"); signal.printControl = true; signal.InputParameter = false; staticForm = this; this.groupBox2.Hide(); mycallback = new CallBack(CallBackProc); handle = this.Handle; HOperatorSet.GenEmptyObj(out m_Image); HOperatorSet.GenEmptyObj(out m_objDisp); m_hWindowHandle = hWindowControl1.HalconID; m_AcqHandle = Vision.CamParam.m_AcqHandle; HOperatorSet.SetDraw(m_hWindowHandle, "margin"); HOperatorSet.SetColored(m_hWindowHandle, 12); HOperatorSet.SetColor(m_hWindowHandle, "red"); //设置halcon内部处理的图像的宽度和高度 HOperatorSet.SetSystem("tsp_width", 3000); HOperatorSet.SetSystem("tsp_height", 3000); try { DataBaseOperate.OpenConnection(); //打开数据库 DataBaseOperate.CloseConnection(); //关闭数据库 } catch { MessageBox.Show("数据库连接失败。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); System.Windows.Forms.Application.Exit(); } Control.CheckForIllegalCrossThreadCalls = false; #region 对plc连接信号赋值 //读CIO1100.00位的数据命令********摄像头检测开始 plcCameraTestBegin[0] = 0x80; plcCameraTestBegin[1] = 0x00; plcCameraTestBegin[2] = 0x02; plcCameraTestBegin[3] = 0x00; plcCameraTestBegin[4] = 0x01; plcCameraTestBegin[5] = 0x00; plcCameraTestBegin[6] = 0x00; plcCameraTestBegin[7] = 0x0A; plcCameraTestBegin[8] = 0x00; plcCameraTestBegin[9] = 0x00; plcCameraTestBegin[10] = 0x01; plcCameraTestBegin[11] = 0x01; plcCameraTestBegin[12] = 0x30; plcCameraTestBegin[13] = 0x04; plcCameraTestBegin[14] = 0x4C; plcCameraTestBegin[15] = 0x00; plcCameraTestBegin[16] = 0x00; plcCameraTestBegin[17] = 0x01; //写CIO1100.00位的数据命令********复位摄像头检测开始位 plcCameraTestReset[0] = 0x80; plcCameraTestReset[1] = 0x00; plcCameraTestReset[2] = 0x02; plcCameraTestReset[3] = 0x00; plcCameraTestReset[4] = 0x01; plcCameraTestReset[5] = 0x00; plcCameraTestReset[6] = 0x00; plcCameraTestReset[7] = 0x0A; plcCameraTestReset[8] = 0x00; plcCameraTestReset[9] = 0x00; plcCameraTestReset[10] = 0x01; plcCameraTestReset[11] = 0x02; plcCameraTestReset[12] = 0x30; plcCameraTestReset[13] = 0x04; plcCameraTestReset[14] = 0x4C; plcCameraTestReset[15] = 0x00; plcCameraTestReset[16] = 0x00; plcCameraTestReset[17] = 0x01; plcCameraTestReset[18] = 0x00; //读CIO1102.00位的数据命令********条码打印开始 plcPrinterBegin[0] = 0x80; plcPrinterBegin[1] = 0x00; plcPrinterBegin[2] = 0x02; plcPrinterBegin[3] = 0x00; plcPrinterBegin[4] = 0x01; plcPrinterBegin[5] = 0x00; plcPrinterBegin[6] = 0x00; plcPrinterBegin[7] = 0x0A; plcPrinterBegin[8] = 0x00; plcPrinterBegin[9] = 0x00; plcPrinterBegin[10] = 0x01; plcPrinterBegin[11] = 0x01; plcPrinterBegin[12] = 0x30; plcPrinterBegin[13] = 0x04; plcPrinterBegin[14] = 0x4E; plcPrinterBegin[15] = 0x00; plcPrinterBegin[16] = 0x00; plcPrinterBegin[17] = 0x01; //写CIO1102.00位的数据命令********复位条码打印开始位 plcPrinterReset[0] = 0x80; plcPrinterReset[1] = 0x00; plcPrinterReset[2] = 0x02; plcPrinterReset[3] = 0x00; plcPrinterReset[4] = 0x01; plcPrinterReset[5] = 0x00; plcPrinterReset[6] = 0x00; plcPrinterReset[7] = 0x0A; plcPrinterReset[8] = 0x00; plcPrinterReset[9] = 0x00; plcPrinterReset[10] = 0x01; plcPrinterReset[11] = 0x02; plcPrinterReset[12] = 0x30; plcPrinterReset[13] = 0x04; plcPrinterReset[14] = 0x4E; plcPrinterReset[15] = 0x00; plcPrinterReset[16] = 0x00; plcPrinterReset[17] = 0x01; plcPrinterReset[18] = 0x00; //写CIO1101.00位的数据命令********摄像头OK信号 plcCameraTestOK[0] = 0x80; plcCameraTestOK[1] = 0x00; plcCameraTestOK[2] = 0x02; plcCameraTestOK[3] = 0x00; plcCameraTestOK[4] = 0x01; plcCameraTestOK[5] = 0x00; plcCameraTestOK[6] = 0x00; plcCameraTestOK[7] = 0x0A; plcCameraTestOK[8] = 0x00; plcCameraTestOK[9] = 0x00; plcCameraTestOK[10] = 0x01; plcCameraTestOK[11] = 0x02; plcCameraTestOK[12] = 0x30; plcCameraTestOK[13] = 0x04; plcCameraTestOK[14] = 0x4D; plcCameraTestOK[15] = 0x00; plcCameraTestOK[16] = 0x00; plcCameraTestOK[17] = 0x01; plcCameraTestOK[18] = 0x01; #endregion //创建(实例化)线程,将需要执行的函数(方法-过程)传入线程中 this.threadInBack = new Thread(new ThreadStart(PLCConnection)); //3 //设置线程为后台线程(随着主线程(窗体线程)的退出而退出) this.threadInBack.IsBackground = true; this.threadInBack.Start(); comboBox_color.SelectedIndex = 3; comboBox_port.SelectedIndex = 1; comboBox_format.SelectedIndex = 0; comboBox_channel.SelectedIndex = 0; comboBox_interrupt.SelectedIndex = 1; step = 1; step_print = 1; for (ushort i = 0; i < MaxPort; i++)//initialize each port { if (Angelo.AngeloRTV_Initial(i) != 0) { MessageBox.Show("Total No. of AngeloRTV Port = " + i.ToString()); break; } } }