Esempio n. 1
0
 public bool Connect(string IP, string Port)
 {
     // 初始化map
     initMap();
     try
     {
         //定义一个套字节监听  包含3个参数(IP4寻址协议,流式连接,TCP协议)
         socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
         IPAddress ipaddress = IPAddress.Parse(IP);
         //将获取的ip地址和端口号绑定到网络节点endpoint上
         IPEndPoint endpoint = new IPEndPoint(ipaddress, int.Parse(Port));
         //注意: 这里是客服端套接字连接到Connect网络节点 不是Bind
         socketClient.Connect(endpoint);
         //new一个新线程 调用下面的接受服务端发来信息的方法RecMsg
         threadClient = new Thread(RecMsg);
         //将窗体线程设置为与后台同步
         threadClient.IsBackground = true;
         //启动线程
         threadClient.Start();
         interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(SetDevState);
         lj = true; // 链接成功
         return(true);
     }
     catch (Exception err)
     {
         lj = false; // 链接失败
         return(false);
         //MessageBox.Show(err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Esempio n. 2
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            setOrgComb();                                                             //初始化秤属性
            scoket.InitializationWebScoket();                                         //初始化scoket

            interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(UpdateTextBox); //实例化委托对象
            scoket.OnReceive     += ReceiveMsg;
            scoket.OnConnect     += ScoketConnect;
            OpenSerialPort();                                                       //打开电子秤
                                                                                    //serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
                                                                                    //thread = new Thread(Read);//多线程去读
                                                                                    //thread.Start();

            TimeResult = new System.Threading.Timer(new TimerCallback(MyDelegate)); //时间控件去读
            TimeResult.Change(0, 500);
        }
Esempio n. 3
0
        /// <summary>
        /// 打开串口
        /// </summary>
        /// <returns></returns>
        private bool OpenCom()
        {
            bool flag = true;

            try
            {
                if ((LCRManchine.EquipmentType == "4980") || (LCRManchine.EquipmentType == "E4982A") || (LCRManchine.EquipmentType == "E34420A"))
                {
                    flag = LCR.OpenPowerSupplyGPIB(LCRManchine.AgilentAddress);
                }
                else

                {
                    //if (this.serialPort1.IsOpen)
                    //{
                    //    this.serialPort1.Stop();
                    //}
                    StringBuilder temp = new StringBuilder(10000);
                    this.serialPort1.PortName  = LCRManchine.PortName;
                    this.serialPort1.BaudRate  = LCRManchine.Baudbits;
                    this.serialPort1.DataBits  = LCRManchine.DataBits;
                    this.serialPort1.StopBits  = (System.IO.Ports.StopBits)LCRManchine.StopBits;
                    this.serialPort1.Parity    = (System.IO.Ports.Parity)Enum.Parse(typeof(System.IO.Ports.Parity), LCRManchine.Parity);
                    this.serialPort1.DtrEnable = LCRManchine.DTR;
                    //this.serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(Serial_DataReceived);
                    //this.serialPort1.Open();

                    serialPort1.Sart(temp.ToString());
                    if (serialPort1.IsOpen)
                    {
                        serialPort1.ReceivedData += new EventHandler <TEventArgs <string> >(sport_ReceivedData);
                        UpdateCombinTextHandler   = new HandleInterfaceUpdataDelegate(UpdateCombinText);
                        serialPort1.NewLines      = new string[] { "\r\n   ", "\r\n    ", "\r\n" };
                    }
                }
            }
            catch (Exception ex)
            {
                setMessage(MessageType.Error, ex.Message);
                flag = false;
            }
            return(flag);
        }
Esempio n. 4
0
        private void UDPServer_Start(string IP,string Port)
        {
            UDP_Server_Port = Convert.ToInt32(Port);

            string strDomain = IP;

            string ipAddress = string.Empty;
            System.Text.RegularExpressions.Regex check = new System.Text.RegularExpressions.Regex(@"^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$");

            if (!check.IsMatch(strDomain))
            {
                IPHostEntry hostEntry = Dns.Resolve(strDomain);
                IPEndPoint ipEndPoint = new IPEndPoint(hostEntry.AddressList[0], 0);
                //这就是你想要的
                UDP_IP = ipEndPoint.Address.ToString();
            }
            else
            {
                UDP_IP = strDomain;
            } 

            UDPThread = new Thread(ThreadCallBack);
            thread_run = true;
            UDPThread.Start();
            interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(SetDevState);
        }
Esempio n. 5
0
        public bool TCP_Connect(string IP, string Port)
        {
            try
            {
                //定义一个套字节监听  包含3个参数(IP4寻址协议,流式连接,TCP协议)
                socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //客户端同样 需要获取文本框中的IP地址
                string strDomain = IP;

                string ipAddress = string.Empty;
                System.Text.RegularExpressions.Regex check = new System.Text.RegularExpressions.Regex(@"^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$");

                if (!check.IsMatch(strDomain))
                {
                    IPHostEntry hostEntry = Dns.Resolve(strDomain);
                    IPEndPoint ipEndPoint = new IPEndPoint(hostEntry.AddressList[0], 0);
                    //这就是你想要的
                    ipAddress = ipEndPoint.Address.ToString();
                }
                else
                {
                    ipAddress = strDomain;
                }

                IPAddress ipaddress = IPAddress.Parse(ipAddress);
                //将获取的ip地址和端口号绑定到网络节点endpoint上
                IPEndPoint endpoint = new IPEndPoint(ipaddress, int.Parse(Port));
                //注意: 这里是客服端套接字连接到Connect网络节点 不是Bind
                socketClient.Connect(endpoint);
                //new一个新线程 调用下面的接受服务端发来信息的方法RecMsg
                threadClient = new Thread(RecMsg);
                thread_run = true;
                //将窗体线程设置为与后台同步
                threadClient.IsBackground = true;
                //启动线程
                threadClient.Start();
                interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(SetDevState);
                return true;
            }
            catch (Exception err)
            {
                fdebug.AddInfo("Connect() " + err.Message );
                //MessageBox.Show(err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
        }
Esempio n. 6
0
        private bool BeginListen()
        {
            bool ret = false;
            if (m_UsePool)
            {
                DataTable dt = new DataTable();
                if (lv_Category.SelectedItems.Count > 0)
                {
                    if (lv_Category.SelectedItems[0].Tag.ToString() == "999999")
                    {
                        dt = DBPool.DBSerialAll();
                    }
                    else
                    {
                        dt = DBPool.DBSerialByGroup(lv_Category.SelectedItems[0].Tag.ToString());
                    }
                }
                
                
                //启动串口池
                if(dt.Rows.Count>0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        SerialPort sp = new SerialPort(dr["SerialPort"].ToString(), 9600, Parity.None, 8);
                        try
                        {               
                            sp.ReceivedBytesThreshold = 8;
                            sp.ReadBufferSize = 8;
                            sp.WriteBufferSize = 8;
                            sp.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived);//DataReceived事件委托
                            //读写时间超时 
                            sp.DtrEnable = true;
                            sp.RtsEnable = true;
                            sp.ReadTimeout = ReadTimeout;
                            sp.WriteTimeout = WriteTimeout;
                            sp.Open();
                            l_SerialPorts.Add(sp);
                        }
                        catch (Exception e)
                        {

                            txt_PoolInfo.AppendText(e.Message + "("+DateTime.Now + ")\r\n");
                        }


                    }
                    //interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(SetDevState);
                }
                if (lv_Category.SelectedItems.Count > 0)
                {
                    if (lv_Category.SelectedItems[0].Tag.ToString() == "999999")
                    {
                        dt = DBPool.DBTCPAll();
                    }
                    else
                    {
                        dt = DBPool.DBTCPByGroup(lv_Category.SelectedItems[0].Tag.ToString());
                    }
                }
                
                //启动TCP池
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        try
                        {
                            string[] tmpHostEntry = dr["HostEntry"].ToString().Split(':');
                            //定义一个套字节监听  包含3个参数(IP4寻址协议,流式连接,TCP协议)
                            Socket tmpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                            //客户端同样 需要获取文本框中的IP地址
                            string strDomain = tmpHostEntry[0];
                            string ipAddress =string.Empty;
                            System.Text.RegularExpressions.Regex check = new System.Text.RegularExpressions.Regex(@"^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$");

                            if (!check.IsMatch(strDomain))
                            {
                                IPHostEntry hostEntry = Dns.Resolve(strDomain);
                                IPEndPoint ipEndPoint = new IPEndPoint(hostEntry.AddressList[0], 0);
                                //这就是你想要的
                                ipAddress = ipEndPoint.Address.ToString();
                            }
                            else
                            {
                                ipAddress=strDomain;
                            }
                            IPAddress ipaddress = IPAddress.Parse(ipAddress);
                            //将获取的ip地址和端口号绑定到网络节点endpoint上
                            IPEndPoint endpoint = new IPEndPoint(ipaddress, int.Parse(tmpHostEntry[1]));
                            //注意: 这里是客服端套接字连接到Connect网络节点 不是Bind
                            tmpSocket.Connect(endpoint);
                            //new一个新线程 调用下面的接受服务端发来信息的方法RecMsg
                            //Thread tmpthreadClient = new Thread(RecMsg);
                            //将窗体线程设置为与后台同步
                            //tmpthreadClient.IsBackground = true;
                            //启动线程
                            //tmpthreadClient.Start();
                            HandleInterfaceUpdataDelegate hud = new HandleInterfaceUpdataDelegate(SetDevState);
                            l_Sockets.Add(tmpSocket);

                            object obj = new object[] { this, hud, l_Sockets };
                            WorkerClass wc = new WorkerClass();
                            bool rc = ThreadPool.QueueUserWorkItem(new WaitCallback(wc.RunProcess), obj);

                            ThreadPool.QueueUserWorkItem(new WaitCallback(wc.RunProcess), obj);
                            //l_ClientThreads.Add(tmpthreadClient);
                        }
                        catch (Exception e)
                        {
                            txt_PoolInfo.AppendText(dr["HostEntry"].ToString() + " " + e.Message + "(" + DateTime.Now + ")\r\n");

                        }
                    }
                        //interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(SetDevState);      
                }
                int ConCount=l_SerialPorts.Count + l_Sockets.Count;
                if (ConCount > 0)
                {
                    interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(SetDevState); 

                    tssl_Info.Text = "已成功连接" + ConCount.ToString() + "个端口";
                    btnBeginListen.Enabled = false;
                    btnEndListen.Enabled = true;
                    UnknownStatus();
                    EnableBtn(true);
                    ret = true;
                }
                else
                {
                    tssl_Info.Text = "没有连接端口";
                }

            }
            else
            {
                if (rb_TCP.Checked)
                {
                    try
                    {
                        if (TCP_Connect(txtIP.Text, txtPort.Text))
                        {
                            btnBeginListen.Enabled = false;
                            btnEndListen.Enabled = true;
                            EnableBtn(true);
                            UnknownStatus();
                            EnableBtn(true);
                            ret = true;
                            rb_COM.Enabled = false;
                            rb_TCP.Enabled = false;
                            rb_UDP.Enabled = false;
                            txtPort.Enabled = false;
                            txtIP.Enabled = false;
                        }

                    }
                    catch (Exception err)
                    {
                        fdebug.AddInfo("btnBeginListen_Click() " + err.Message);
                        // MessageBox.Show(err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                    if (rb_UDP.Checked)
                    {
                        UDPServer_Start(txtIP.Text, txtPort.Text);

                        btnBeginListen.Enabled = false;
                        btnEndListen.Enabled = true;
                        EnableBtn(true);
                        rb_COM.Enabled = false;
                        rb_TCP.Enabled = false;
                        rb_UDP.Enabled = false;
                        txtPort.Enabled = false;
                        txtIP.Enabled = false;
                    }
                else
                    if (rb_COM.Checked)
                    {
                        try
                        {
                            if (serialPort == null)
                            {
                                int band = 9600;
                                if (cb_Band.Text.Equals("Flex Wire"))
                                {
                                    band = 115200;
                                }
                                else
                                    band=Convert.ToInt32(cb_Band.Text);

                                serialPort = new SerialPort(cb_SerialPort.Text,band , Parity.None, 8);
                                serialPort.ReceivedBytesThreshold = 8;
                                serialPort.ReadBufferSize = 8;
                                serialPort.WriteBufferSize = 8;
                                serialPort.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived);//DataReceived事件委托
                                //读写时间超时 
                                serialPort.DtrEnable = true;
                                serialPort.RtsEnable = true;
                                serialPort.ReadTimeout = ReadTimeout;
                                serialPort.WriteTimeout = WriteTimeout;
                                serialPort.Open();
                            }
                            btnBeginListen.Enabled = false;
                            btnEndListen.Enabled = true;

                            UnknownStatus();
                            EnableBtn(true);
                            ret = true;
                            interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(SetDevState);
                            rb_COM.Enabled = false;
                            cb_SerialPort.Enabled = false;
                            rb_TCP.Enabled = false;
                            rb_UDP.Enabled = false;
                            
                        }
                        catch (Exception err)
                        {
                            fdebug.AddInfo("btnBeginListen_Click() " + err.Message );
                            //MessageBox.Show(err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                SaveConnectCfg();
            }
            timer_INQUIRE.Interval = 100;
            timer_INQUIRE.Enabled = true;
            timer_watchdog.Enabled = m_Reconnection;
            return ret;
        }
Esempio n. 7
0
 public SerialDataReceiveHandler(SerialPort serialPort, Control control)
 {
     this.MySerialPort     = serialPort;
     this.MControl         = control;
     interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(UpdateSerialPortData);//实例化委托对象
 }
Esempio n. 8
0
        private void Form1_Load(object sender, EventArgs e)
        {
            interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(UpdateUI);

            //枚举本机串口号
            string[] portNames = SerialPort.GetPortNames();
            foreach (string name in portNames)
            {
                comboBox_serialNumber.Items.Add(name);
            }
            //默认选中最后一个串口号
            comboBox_serialNumber.SelectedIndex = comboBox_serialNumber.Items.Count - 1;

            //枚举波特率
            string[] baudrates =
            {
                "4800",
                "9600",
            };
            foreach (string baud in baudrates)
            {
                comboBox_baud.Items.Add(baud);
            }
            //comboBox_baud.SelectedIndex = 0;
            comboBox_baud.SelectedIndex = comboBox_baud.Items.Count - 1;


            String[] CommandName =
            {
                "启动",
                "停止",
            };
            foreach (String name in CommandName)
            {
                int i = dataGridView_cmd.Rows.Add();
                dataGridView_cmd.Rows[i].Cells[0].Value = name;
            }

            //不可以用窗体里的定时器控件,因为对控件的操作比如定时器的启动和停止,需要在UI线程操作,在串口接收的函数里并不是UI线程在执行,无法操作

            //定时一秒的串口接收等待时间
            timer_serial = new System.Timers.Timer(1000);
            //定时十秒的短信发送超时时间

            //注册计时器的事件
            timer_serial.Elapsed += new ElapsedEventHandler(timer_serial_Tick);

            //设置是执行一次(false)还是一直执行(true),默认为true
            timer_serial.AutoReset = false;

            //每一个列表一个Table类变量。
            tableCmd          = new Table(mdbPath, tableNameCmd, dataGridView_c, null);
            tableAccount      = new Table(mdbPath, tableNameAccount, dataGridView_a, null);
            tableIncome       = new Table(mdbPath, tableNameIncome, dataGridView_i, chart1);
            tablePrice        = new Table(mdbPath, tableNamePrice, dataGridView_d, null);
            tableDeviceRecord = new Table(mdbPath, tableNameDeviceRecord, dataGridView_r, null);
            tableDeviceSIM    = new Table(mdbPath, tableNameDeviceSIM, dataGridView_s, null);

            RefreashTarget();

            tablePrice.ReadFromAccess();
            tableIncome.ReadFromAccess();
            tableAccount.ReadFromAccess();
            tableCmd.ReadFromAccess();
            tableDeviceRecord.ReadFromAccess();

            //将分页框和类的变量绑定
            tabPageChart.Tag   = tableIncome;
            tabPageAccount.Tag = tableAccount;
            tabPageCmd.Tag     = tableCmd;
            tabPageRecord.Tag  = tableDeviceRecord;
            tabPageSim.Tag     = tableDeviceSIM;
            tabPagePrice.Tag   = tablePrice;
            tabPageIncome.Tag  = tableIncome;
        }