コード例 #1
0
        private void taskFunc()
        {
            threadNewTask = new ExThread(newTaskFunc);
            threadNewTask.Start();

            threadAssignTask = new ExThread(assignTaskFunc);
            threadAssignTask.Start();

            threadUpadteTask = new ExThread(updateTaskFunc);
            threadUpadteTask.Start();

            //任务调度已经完全开启
            TaskState = true;

            //启动数据同步
            DataSync.Start();

            while (this.IsHandleCreated && this.IsDisposed == false)
            {
                //更新MES状态
                UpdateMES();

                Thread.Sleep(Parameter.taskFuncTime);
            }
        }
コード例 #2
0
        private void mainThread()
        {
            //启动Console信息同步进程
            ConsoleThread = new ExThread(ConsoleFunc);
            ConsoleThread.Start();

            MyConsole.Add("系统启动中...");

            MyConsole.Add(string.Format("服务器地址:{0}", UdpSever.ServerAddress));
            MyConsole.Add(string.Format("设备数:{0}", UdpSever.DeviceNum));
            MyConsole.Add(string.Format("寄存器数:{0}", UdpSever.RegisterNum));
            MyConsole.Add(string.Format("单帧数据长度:{0}", UdpSever.FrameLen));
            MyConsole.Add(string.Format("心跳周期:{0}秒", UdpSever.HeartCycle));
            MyConsole.Add(string.Format("重发次数:{0}", UdpSever.RepeatNum));
            MyConsole.Add(string.Format("超时时间:{0}", UdpSever.ResponseTimeout));
            MyConsole.Add(string.Format("响应帧缓冲池容量:{0}", UdpSever.RESPONSE_MAX_LEN));
            MyConsole.Add(string.Format("设备总数:{0}", UdpSever.DeviceNum));

            //测试ModbusTcp服务器连接
            Ping      pingSender = new Ping();
            PingReply reply      = pingSender.Send("192.168.250.102", 100);//第一个参数为ip地址,第二个参数为ping的时间

            if (reply.Status == IPStatus.Success)
            {
                MyConsole.Add("ModbusTcp服务器连接成功!", Color.Green);
            }
            else
            {
                MyConsole.Add("ModbusTcp服务器连接失败!", Color.Red);
            }

            #region 获取本机IP,自动开启Dbus服务器
            string      name      = Dns.GetHostName();
            IPAddress[] ipadrlist = Dns.GetHostAddresses(name);
            foreach (IPAddress ipa in ipadrlist)
            {
                if (ipa.AddressFamily == AddressFamily.InterNetwork)
                {
                    MyConsole.Add(string.Format("本机IP:[{0}]", ipa));
                    UdpSever.ipaddress = ipa;
                }
            }

            //自动启动服务器
            UdpSever.Resault rs = UdpSever.Start();
            //更新界面
            udpConfigForm_MyEvent();
            #endregion

            #region 启动任务界面
            this.Invoke(new MethodInvoker(delegate
            {
                taskForm.TopLevel = false;
                taskForm.Parent   = splitContainer3.Panel1;
                taskForm.Show();  //弹出这个窗口
                taskForm.Focus(); //激活显示
            }));
            #endregion
        }
コード例 #3
0
        private void DataMonitor_Load(object sender, EventArgs e)
        {
            MyConsole.Add("数据监控启动", Color.Orange);
            this.FormClosing += DataMonitor_FormClosing;
            //创建菜单
            contextMenu      = new ContextMenuStrip();
            contextMenu.Font = new Font("新宋体", 14);
            contextMenu.Items.Add("更新描述");
            contextMenu.Items.Add("清除描述");
            //添加点击事件
            contextMenu.Items[0].Click += contextMenu_AddDes_Click;
            contextMenu.Items[1].Click += contextMenu_ClearDes_Click;

            //添加单元格点击事件
            doubleBufferListView1.MouseClick += DoubleBufferListView1_MouseClick;

            #region 数据列表
            datekey[0] = "日期";
            datekey[1] = "时间";
            datekey[2] = "寄存器类型";
            datekey[3] = "寄存器地址";
            datekey[4] = "值";
            datekey[5] = "更新次数";
            datekey[6] = "传输方向";
            datekey[7] = "描述";

            doubleBufferListView1.FullRowSelect = true;//要选择就是一行
            doubleBufferListView1.Columns.Add(datekey[0], 180, HorizontalAlignment.Center);
            doubleBufferListView1.Columns.Add(datekey[1], 220, HorizontalAlignment.Center);
            doubleBufferListView1.Columns.Add(datekey[2], 140, HorizontalAlignment.Center);
            doubleBufferListView1.Columns.Add(datekey[3], 140, HorizontalAlignment.Center);
            doubleBufferListView1.Columns.Add(datekey[4], 100, HorizontalAlignment.Left);
            doubleBufferListView1.Columns.Add(datekey[5], 100, HorizontalAlignment.Left);
            doubleBufferListView1.Columns.Add(datekey[6], 150, HorizontalAlignment.Left);
            doubleBufferListView1.Columns.Add(datekey[7], -2, HorizontalAlignment.Left);

            for (int i = 0; i < DataSync.Profinet.Register.Length; i++)
            {
                ListViewItem item = new ListViewItem();
                item.Text = DateTime.Now.ToString("yyyy-MM-dd");          //"日期";
                item.SubItems.Add(DateTime.Now.ToString("HH:mm:ss fff")); //  "时间";
                item.SubItems.Add("WORD");                                //  "寄存器类型";
                item.SubItems.Add("0");                                   //  "寄存器地址";
                item.SubItems.Add("0");                                   //  "值";
                item.SubItems.Add("0");                                   //  "更新次数";
                item.SubItems.Add("");                                    //  "传输方向";
                item.SubItems.Add("");                                    //  "描述";
                doubleBufferListView1.Items.Add(item);
                doubleBufferListView1.Items[i].ForeColor = Color.Gray;

                doubleBufferListView1.Items[i].BackColor = i % 2 == 0 ? Color.White : Color.FromArgb(0xf0, 0xf5, 0xf5, 0xf5);
            }
            #endregion


            mainThread = new ExThread(func);
            mainThread.Start();
        }
コード例 #4
0
ファイル: Form1.cs プロジェクト: CrimsonPiZza/IMU_Display
        private void connect_Device4_Click(object sender, EventArgs e)
        {
            device4_Handle = new ZenClientHandle_t();
            device4_Sensor = new ZenSensorHandle_t();

            connectedDevice[3] = foundSensors[device_List4.SelectedIndex].identifier;
            ExThread exThread = new ExThread(foundSensors[device_List4.SelectedIndex], 4, device4_Handle, device4_Sensor);

            device4_Thread = new Thread(new ThreadStart(exThread.sensorEventThread));
            device4_Thread.Start();
        }
コード例 #5
0
    // Main method
    static void Main()
    {
        // Creating object of ExThread
        ExThread obj = new ExThread("Thread ");

        Thread.Sleep(1000);
        Console.WriteLine("Stop thread");
        obj.thr.Abort(100);

        // Waiting for a thread to terminate.
        obj.thr.Join();
        Console.WriteLine("Main thread is terminating");
    }
コード例 #6
0
        static async Task Main(string[] args)
        {
            bool res = Helper.Environment.LoadEnvFile() ? true : false;

            // Creating object of ExThread class
            ExThread obj = new ExThread();
            // Creating thread
            // Using thread class
            Thread thr = new Thread(new ThreadStart(obj.thread1));

            thr.Start();
            Thread thr2 = new Thread(new ThreadStart(obj.thread2));

            thr2.Start();
        }
コード例 #7
0
        private static void mainThreadFunc()
        {
            while (true)
            {
                if (MainThread.exitEvent.WaitOne(1000))
                {
                    break;
                }

                #region 启动Dbus
                //启动监听进程
                if (SyncState.Dbus == false)
                {
                    dbusThread = new ExThread(Syncdbus);
                    dbusThread.Start();
                    MyConsole.Add("监听Dbus线程已启动!", Color.Green);
                    SyncState.Dbus = true;
                }
                #endregion

                #region 启动ModbusTcp
                if (SyncState.ModbusTcp == false)
                {
                    try
                    {
                        MyConsole.Add(string.Format("开始连接ModbusTcp客户端,IP地址:{0},Port:{1}", Profinet.ModbusTcpSeverIPAddress, Profinet.ModbusTcpSeverPort));
                        //连接超时1000ms
                        TcpClient tcpClient = new ExTcpClient(Profinet.ModbusTcpSeverIPAddress, Profinet.ModbusTcpSeverPort, 1000).Connect();
                        modbusMaster = ModbusIpMaster.CreateIp(tcpClient);
                        modbusMaster.Transport.WriteTimeout            = Profinet.Timeout;         //写超时
                        modbusMaster.Transport.ReadTimeout             = Profinet.Timeout;         //读超时
                        modbusMaster.Transport.WaitToRetryMilliseconds = Profinet.WaitToRetryTime; //重试等待时间
                        modbusMaster.Transport.Retries = Profinet.RetryNum;                        //重试次数

                        //启动监听进程
                        modbusThread = new ExThread(SyncModbus);
                        modbusThread.Start();
                        SyncState.ModbusTcp = true;
                        MyConsole.Add("监听ModbusTCP线程启动成功!", Color.Green);
                    }
                    catch
                    {
                        MyConsole.Add("监听ModbusTCP线程启动失败!", Color.Red);
                    }
                }
                #endregion
            }
        }
コード例 #8
0
    // Main method
    public static void Main()
    {
        // Creating instance for
        // mythread() method
        ExThread obj = new ExThread();

        // Creating and initializing threads
        Thread thr1 = new Thread(new ThreadStart(obj.Mythread));
        Thread thr2 = new Thread(new ThreadStart(obj.Mythread1));

        thr1.Start();

        // Join thread
        thr1.Join();
        thr2.Start();
    }
コード例 #9
0
        public static void main()
        {
            // Start of Code
            ZenClientHandle_t zenHandle = new ZenClientHandle_t();

            OpenZen.ZenInit(zenHandle);

            ExThread obj = new ExThread(zenHandle);

            // Creating thread
            // Using thread class
            thr = new Thread(new ThreadStart(obj.sensorEventThread));
            thr.Start();

            // start sensor listing, new sensors will be reported as Events in our event thread
            OpenZen.ZenListSensorsAsync(zenHandle);

            while (!obj.mSearchDone)
            {
                Console.WriteLine("Searching for sensors ...");
                Thread.Sleep(1000);
            }

            ZenSensorInitError sensorInitError = ZenSensorInitError.ZenSensorInitError_Max;

            // try three connection attempts
            for (int i = 0; i < 10; i++)
            {
                ZenSensorHandle_t sensorHandle = new ZenSensorHandle_t();
                sensorInitError = OpenZen.ZenObtainSensor(zenHandle, obj.mFoundSensors[0], sensorHandle);
                if (sensorInitError == ZenSensorInitError.ZenSensorInitError_None)
                {
                    Console.WriteLine("Succesfully connected to sensor");
                    break;
                }
            }

            if (sensorInitError != ZenSensorInitError.ZenSensorInitError_None)
            {
                Console.WriteLine("Could not connect to sensor");
                System.Environment.Exit(1);
            }
        }
コード例 #10
0
        //开始同步
        public static void Start()
        {
            //加载modbus配置,有配置则更新为配置,没有则不更新
            ExTimeOut et = new ExTimeOut(2000);

            modbusConfig = et.Connect();

            if (modbusConfig != null)
            {
                //modbus 检测时间
                var data = modbusConfig.FirstOrDefault(m => m.key == "circle");
                if (data != null)
                {
                    Profinet.Cycle = int.Parse(data.value);
                }

                //modbus服务器IP地址
                data = modbusConfig.FirstOrDefault(m => m.key == "ip");
                if (data != null)
                {
                    Profinet.ModbusTcpSeverIPAddress = data.value;
                }

                //modbus服务器端口
                data = modbusConfig.FirstOrDefault(m => m.key == "port");
                if (data != null)
                {
                    Profinet.ModbusTcpSeverPort = int.Parse(data.value);
                }

                MyConsole.Add("数据库打开成功!", Color.Green);
            }
            else
            {
                MyConsole.Add("数据库打开失败!", Color.Red);
            }


            MainThread = new ExThread(mainThreadFunc);
            MainThread.thread.IsBackground = true;
            MainThread.Start();
        }