protected void Page_Load(object sender, EventArgs e) { PISDK.PISDK SDK = new PISDK.PISDK(); //Creates new instance of PI SDK PI_SERVER = SDK.Servers["esmartserver-pc"]; //Assign PI server to local machine [Piservername] PI_SERVER.Open("piadmin"); //Open connection through default user //Initialize point data starting at 12:50p rpiCONNECT = updatePointValue("SP14VICE_Connection", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); RPM = updatePointValue("SP14VICE_RPM", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); FLOW = updatePointValue("SP14VICE_Flow", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); PRESSURE = updatePointValue("SP14VICE_Pressure", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); POWER = updatePointValue("F13APA_POWER_BOT1", "12/6/2013 4:50:00 PM", DateTime.Now.ToString()); TEMP = updatePointValue("SP14VICE_Temp", "3/13/2013 1:05:00 PM", DateTime.Now.ToString()); }
protected void Page_Load(object sender, EventArgs e) { PISDK.PISDK SDK = new PISDK.PISDK(); //Creates new instance of PI SDK PI_SERVER = SDK.Servers["esmartserver-pc"]; //Assign PI server to local machine [Piservername] PI_SERVER.Open("piadmin"); //Open connection through default user //Initialize point data starting at 12:50p rpiCONNECT = updatePointValue("SP14VICE_Connection", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); FREQ = updatePointValue("SP14VICE_Freq", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); RPM = updatePointValue("SP14VICE_RPM", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); FLOW = updatePointValue("SP14VICE_Flow", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); DF = updatePointValue("SP14VICE_DesiredFlow", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); PRESSURE = updatePointValue("SP14VICE_Pressure", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); VOLT = updatePointValue("SP14VICE_TopVoltage1", "3/6/2014 1:20:00 PM", DateTime.Now.ToString()); CURR = updatePointValue("SP14VICE_TopCurrent1", "3/6/2014 1:20:00 PM", DateTime.Now.ToString()); POWER = updatePointValue("SP14VICE_TopPower1", "3/6/2014 1:20:00 PM", DateTime.Now.ToString()); TEMP = updatePointValue("SP14VICE_Temp", "3/13/2013 1:05:00 PM", DateTime.Now.ToString()); USERLOCK = updatePointValue("SP14VICE_Lock", "12/6/2013 4:50:00 PM", DateTime.Now.ToString()); // 1= unlocked, 0 = locked COST.value = findCost(120, (float)0.35).ToString(); //Assume: running pump for 4 hrs/day for 30 days; tier 3 pricing during summer ($.35/kWH) COST.timestamp = DateTime.Now.ToString(); setTableValues(); }
protected void Page_Load(object sender, EventArgs e) { ///// Connect to pi server ///// PISDK.PISDK SDK = new PISDK.PISDK(); //Creates new instance of PI SDK PI_SERVER = SDK.Servers["esmartserver-pc"]; //Assign PI server to local machine [Piservername] PI_SERVER.Open("piadmin"); //Open connection through default user //Initialize point data starting at 12:50p rpiCONNECT = updatePointValue("SP14VICE_Connection", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); RPM = updatePointValue("SP14VICE_RPM", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); FLOW = updatePointValue("SP14VICE_Flow", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); PRESSURE = updatePointValue("SP14VICE_Pressure", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); POWER = updatePointValue("F13APA_POWER_BOT1", "12/6/2013 4:50:00 PM", DateTime.Now.ToString()); USERLOCK = updatePointValue("SP14VICE_Lock", "12/6/2013 4:50:00 PM", DateTime.Now.ToString()); // 1= unlocked, 0 = locked if (USERLOCK.value == "1") { lockoutdisp.InnerHtml = "OFF - UNLOCKED"; } else if (USERLOCK.value == "0") { lockoutdisp.InnerHtml = "ON - LOCKED"; } }
void CalculatePoint(float _range, float width, Transform _myPos) { float angle = (width * 180) / (Mathf.PI * _range); int count = (int)(360 / angle); Transform _tmpPpoint = null; Quaternion q = Quaternion.identity; List <pointData> _tmpLlist = new List <pointData>(); pointData tmpData = null; for (int i = 0; i < count; i++) { _tmpPpoint = new GameObject(i + "Point").transform; if (_myPos == null) { _tmpPpoint.SetParent(pointParent); } else { _tmpPpoint.SetParent(_myPos); } _tmpPpoint.position = Vector3.forward * (_range + extraRange); q = Quaternion.AngleAxis(angle * i, Vector3.up); _tmpPpoint.position = q * _tmpPpoint.position + transform.position; tmpData = new pointData(_tmpPpoint, q, _range + extraRange); _tmpLlist.Add(tmpData); keysList.Add(tmpData); } atkPoints.Add(_range, _tmpLlist); }
//启动监听 private void th1() { byte[] bytes = new byte[1024]; pointData pd = new pointData(); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); EndPoint Remote = (EndPoint)(sender); while (true) { try { Thread.Sleep(10); addText("主线程开始\r\n\r\n"); bytes = new byte[1000]; pd = new pointData(); pd.length = server.ReceiveFrom(bytes, ref Remote); addText("主线程接收到了一组数据\r\n\r\n"); pd.remote = Remote; pd.recv = bytes; //收到数据后启用一个新的线程处理数据 Thread clientThread = new Thread(new ParameterizedThreadStart(ThreadFunc)); clientThread.IsBackground = true; clientThread.Start(pd); label5.Text = string.Format("当前连接数:{0}", listViewUser.Items.Count); } catch { // addText(ex.ToString()); } } }
protected void Button1_Click(object sender, EventArgs e) { rpiCONNECT = updatePointValue("SP14VICE_Connection", rpiCONNECT.timestamp, DateTime.Now.ToString()); RPM = updatePointValue("SP14VICE_RPM", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); FLOW = updatePointValue("SP14VICE_Flow", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); PRESSURE = updatePointValue("SP14VICE_Pressure", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); }
protected void Page_Load(object sender, EventArgs e) { PISDK.PISDK SDK = new PISDK.PISDK(); //Creates new instance of PI SDK PI_SERVER = SDK.Servers["esmartserver-pc"]; //Assign PI server to local machine [Piservername] PI_SERVER.Open("piadmin"); //Open connection through default user //Initialize point data starting at 12:50p rpiCONNECT = updatePointValue("SP14VICE_Connection", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); RPM = updatePointValue("SP14VICE_RPM", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); FLOW = updatePointValue("SP14VICE_Flow", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); PRESSURE = updatePointValue("SP14VICE_Pressure", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); }
public static List <pointData> createList(int numPoints) { var result = new List <pointData>(); for (int i = 0; i < numPoints; i++) { var data = new pointData(); data.f = Vector3.zero; data.r = Vector3.zero; data.n = 0; data.visited = new HashSet <int>(); data.visited.Add(-1); result.Add(data); } return(result); }
public pointData updatePointValue(string tagName, string start, string end) { PISDK.PIValues PIconnect = new PISDK.PIValues(); //Create new instance of PI value PIconnect = PI_SERVER.PIPoints[tagName].Data.RecordedValues(start, end); pointData temp = new pointData(); foreach (PIValue val in PIconnect) { if (val.Value as DigitalState == null) // if point has data, Digital state means point has no data { object objtemp = val.Value; temp.value = objtemp.ToString(); objtemp = val.TimeStamp.LocalDate; temp.timestamp = objtemp.ToString(); } } lastValueTime = end; return(temp); }
public pointData getPointList(string tagName, string start, string end) { PISDK.PIValues PIconnect = new PISDK.PIValues(); //Create new instance of PI value PIconnect = PI_SERVER.PIPoints[tagName].Data.RecordedValues(start, end); pointData temp = new pointData(); foreach (PIValue val in PIconnect) { if (val.Value as DigitalState == null) // if point has data, Digital state means point has no data { object objtemp = val.Value; temp.value = objtemp.ToString(); objtemp = val.TimeStamp.LocalDate; temp.timestamp = objtemp.ToString(); } } lastValueTime = end; return temp; }
protected void Timer1_Tick(object sender, EventArgs e) { rpiCONNECT = updatePointValue("SP14VICE_Connection", rpiCONNECT.timestamp, DateTime.Now.ToString()); USERLOCK = updatePointValue("SP14VICE_Lock", "3/6/2014 1:20:00 PM", DateTime.Now.ToString()); // 1= unlocked, 0 = locked RPM = updatePointValue("SP14VICE_RPM", "3/6/2014 1:20:00 PM", DateTime.Now.ToString()); FREQ = updatePointValue("SP14VICE_Freq", "3/6/2014 1:20:00 PM", DateTime.Now.ToString()); FLOW = updatePointValue("SP14VICE_Flow", "3/6/2014 1:20:00 PM", DateTime.Now.ToString()); DF = updatePointValue("SP14VICE_DesiredFlow", "2/27/2014 12:50:00 PM", DateTime.Now.ToString()); PRESSURE = updatePointValue("SP14VICE_Pressure", "3/6/2014 1:20:00 PM", DateTime.Now.ToString()); TEMP = updatePointValue("SP14VICE_Temp", "3/6/2014 1:20:00 PM", DateTime.Now.ToString()); VOLT = updatePointValue("SP14VICE_TopVoltage1", "3/6/2014 1:20:00 PM", DateTime.Now.ToString()); CURR = updatePointValue("SP14VICE_TopCurrent1", "3/6/2014 1:20:00 PM", DateTime.Now.ToString()); POWER = updatePointValue("SP14VICE_TopPower1", "3/6/2014 1:20:00 PM", DateTime.Now.ToString()); COST.value = findCost(120, (float)0.35).ToString(); //Assume: running pump for 4 hrs/day for 30 days; tier 3 pricing during summer ($.35/kWH) COST.timestamp = DateTime.Now.ToString(); setTableValues(); }
public int[] getPointList(string tagName, string start, string end) { PISDK.PIValues PIconnect = new PISDK.PIValues(); //Create new instance of PI value PIconnect = PI_SERVER.PIPoints[tagName].Data.RecordedValues(start, end); pointData temp = new pointData(); int counter = 0; int[] PIlist = new int[60]; foreach (PIValue val in PIconnect) { if (val.Value as DigitalState == null) // if point has data, Digital state means point has no data { object objtemp = val.Value; temp.value = objtemp.ToString(); objtemp = val.TimeStamp.LocalDate; temp.timestamp = objtemp.ToString(); PIlist[counter] = int.Parse(temp.value); // add each PI point to the list counter++; } } lastValueTime = end; return PIlist; }
//功能函数 private void ThreadFunc(object obj) { int index = 0; try { Thread.Sleep(10); byte[] bytes = new byte[1024]; pointData pd = (pointData)obj; addText(string.Format("子线程收到数据: {0}\r\n", pd.remote.ToString())); string str = Encoding.GetEncoding("GB2312").GetString(pd.recv, 0, pd.length); addText(string.Format("Message: {0}\r\n", str)); DeviceHelper dh = new DeviceHelper(); //反序列化 dh = Helper.GetJson(str); //获取设备信息 ListViewItem lvi = Helper.GetItem(listViewUser, dh.userid, dh.deviceid); addText("userid:" + dh.userid + "\r\n"); //获取设备index index = Helper.GetIndex(listViewUser, dh.userid, dh.deviceid); addText("index:" + index.ToString() + "\r\n"); if (dh.type != null) { switch (dh.type) { case "identity": #region 硬件IP绑定 addText("identity\r\n"); //判断数据库中是否存在该用户ID if (true) { //查看是否已存在该ID号 if (index >= 0) { //直接删除 listViewUser.Items.RemoveAt(index); } //添加 lvi = new ListViewItem(); lvi = Helper.listAdd(dh.userid, dh.deviceid, pd.remote.ToString()); listViewUser.Items.Add(lvi); bytes = Encoding.GetEncoding("GB2312").GetBytes("OK"); server.SendTo(bytes, pd.remote); } //else //{ // bytes = Encoding.GetEncoding("GB2312").GetBytes("ID号不正确!"); // server.SendTo(bytes, pd.remote); //} break; #endregion case "set": #region 网路端控制硬件请求 addText("set\r\n"); //将请求转发到对应的设备IP地址 dh.type = "response"; if (index < 0) { dh.state = "设备不在线!"; //返回设备不在线 bytes = Encoding.GetEncoding("GB2312").GetBytes(Helper.SetJson(dh)); server.SendTo(bytes, pd.remote); } else { //将数据列表的数据清空,防止设备端误操作 listViewUser.Items[lvi.Index].SubItems[3].Text = string.Empty; //将数据转发到设备端 try { sendToUdp(lvi.SubItems[2].Text, str); //等待返回数据,10ms查一次,共等待5s int tNum = 0; while (tNum < int.Parse(textBoxTimeOut.Text)) { Thread.Sleep(10); // addText(tNum.ToString() + "\r\n"); tNum++; //查看是否有数据 lvi = new ListViewItem(); lvi = Helper.GetItem(listViewUser, dh.userid, dh.deviceid); //addText(lvi.SubItems[3].Text.Length.ToString() + "\r\n"); if (lvi.SubItems[3].Text.Length > 0) //有返回数据 { sendToUdp(pd.remote, lvi.SubItems[3].Text); addText("给网络端回复:" + pd.remote + "\r\n"); addText(lvi.SubItems[3].Text + "\r\n"); //清空数据 listViewUser.Items[lvi.Index].SubItems[3].Text = string.Empty; //Thread.Sleep(10); //给设备返回OK //sendToUdp(lvi.SubItems[2].Text, "OK"); //addText("OK\r\n"); tNum = 501; Thread.Sleep(10); } } if (tNum == 200) //超时 { //给网络返回超时 //超时 dh.state = "设备响应超时!"; bytes = Encoding.GetEncoding("GB2312").GetBytes(Helper.SetJson(dh)); server.SendTo(bytes, pd.remote); addText("设备响应超时!\r\n"); } } catch { dh.state = "设备与服务器连接失效!"; sendToUdp(pd.remote, Helper.SetJson(dh)); } } break; #endregion case "get": #region 网络端获取设备状态 addText("get\r\n"); //将请求转发到对应的设备IP地址 dh.type = "response"; if (index < 0) { dh.state = "设备不在线!"; //返回设备不在线 bytes = Encoding.GetEncoding("GB2312").GetBytes(Helper.SetJson(dh)); server.SendTo(bytes, pd.remote); } else { //将数据列表的数据清空,防止设备端误操作 listViewUser.Items[lvi.Index].SubItems[3].Text = string.Empty; //将数据转发到设备端 try { sendToUdp(lvi.SubItems[2].Text, str); //等待返回数据,10ms查一次,共等待5s int tNum = 0; while (tNum < int.Parse(textBoxTimeOut.Text)) { Thread.Sleep(10); addText(tNum.ToString() + "\r\n"); tNum++; //查看是否有数据 lvi = new ListViewItem(); lvi = Helper.GetItem(listViewUser, dh.userid, dh.deviceid); addText(lvi.SubItems[3].Text.Length.ToString() + "\r\n"); if (lvi.SubItems[3].Text.Length > 0) //有返回数据 { sendToUdp(pd.remote, lvi.SubItems[3].Text); addText("给网络端回复:" + pd.remote + "\r\n"); addText(lvi.SubItems[3].Text + "\r\n"); //清空数据 listViewUser.Items[lvi.Index].SubItems[3].Text = string.Empty; //Thread.Sleep(10); //给设备返回OK //sendToUdp(lvi.SubItems[2].Text, "OK"); //addText("OK\r\n"); tNum = 501; Thread.Sleep(10); } } if (tNum == int.Parse(textBoxTimeOut.Text)) //超时 { //给网络返回超时 //超时 dh.state = "设备响应超时!"; bytes = Encoding.GetEncoding("GB2312").GetBytes(Helper.SetJson(dh)); server.SendTo(bytes, pd.remote); addText("设备响应超时!\r\n"); } } catch { dh.state = "设备与服务器连接失效!"; sendToUdp(pd.remote, Helper.SetJson(dh)); } } break; #endregion case "response": #region 设备端响应网络请求 addText("response\r\n"); //查看是否应经绑定到列表 int i = Helper.GetIndex(listViewUser, dh.userid, dh.deviceid); if (i >= 0) { //写入数据 listViewUser.Items[i].SubItems[3].Text = str; //给设备返回OK sendToUdp(pd.remote, "ok"); addText("ok\r\n"); } else { sendToUdp(pd.remote, "error"); addText("error\r\n"); } break; #endregion case "upload": #region 设备上传数据(传感器) addText("upload\r\n"); //判断数据库中是否存在该用户ID和设备ID if (true) { //存入数据库 userUpdate(dh.userid, dh.deviceid, dh.state); bytes = Encoding.GetEncoding("GB2312").GetBytes("ok"); server.SendTo(bytes, pd.remote); } break; #endregion default: addText("default\r\n"); bytes = Encoding.GetEncoding("GB2312").GetBytes("无效指令!"); server.SendTo(bytes, pd.remote); break; } } else { server.SendTo(Encoding.GetEncoding("GB2312").GetBytes("数据格式不正确!\r\n" + "详细说明请登录www.geek-iot.com"), pd.remote); } } catch (Exception ex) { addText(ex.ToString() + "\r\n"); } addText("执行完成\r\n\r\n"); }