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); } }
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 }
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(); }
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(); }
// 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"); }
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(); }
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 } }
// 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(); }
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); } }
//开始同步 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(); }