基本信息
源码名称:数据接收源码下载
源码大小:0.22M
文件格式:.7z
开发语言:C#
更新时间:2013-10-09
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
ads

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
using CRC;
using AnalysisString;
using System.Data;
using System.Data.SqlClient;
using System.Threading;
using INI;
using System.Diagnostics;
using byt_statistics;
namespace ShipLockReceiver
{
    
    public partial class Form2 : Form
    {
        private static string RECEIVEDATA = "正在接收数据";
        private static string STOPRECEIVE = "未接收数据";
        private static string CACULATING = "正在数据计算";
        private static string NOTCACULATING = "未数据计算";
        private UdpClient receiveUdpClient;
        Thread threadReceive; 
        private DataSet myDatasetD = new DataSet();
        private SqlCommand cmdD = new SqlCommand();
        private SqlConnection conD = new SqlConnection();
        private RequestHandler handler;
        UdpState udpState = new UdpState();
        public Form2()
        {
            InitializeComponent();
            Control.CheckForIllegalCrossThreadCalls = false;
            
            this.ReceiveToolStripMenuItem_Click(null, EventArgs.Empty);
            this.StartWaterCaculationToolStripMenuItem_Click(null, EventArgs.Empty);
        }
        // 检测数据库可用状态
        public static bool CheckConnectionAvailableBySql(string ConnectionString)
        {
            SqlConnection conn = new SqlConnection(ConnectionString);
            try
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
                return true;
            }
            catch (Exception ex) { return false; }
        }
        /// <summary>
        /// 更新状态条
        /// </summary>
        private void UpdateStatusBar()
        {
            if (ReceiveToolStripMenuItem.Enabled)
            {
                toolStripStatusLabel1.Text = STOPRECEIVE;
            }
            else
            {
                toolStripStatusLabel1.Text = RECEIVEDATA;
            }
            if (!StartWaterCaculationToolStripMenuItem.Enabled)
            {
                toolStripStatusLabel2.Text = CACULATING;
            }
            else
            {
                toolStripStatusLabel2.Text = NOTCACULATING;
            }
        }
        private void ReceiveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                ReceiveToolStripMenuItem.Enabled = false;
                StopToolStripMenuItem.Enabled = true;
                UpdateStatusBar();
                IPAddress localIp = IPAddress.Parse(INI.IniSet.ReadSet("localip"));
                IPEndPoint localIPEndPoint = new IPEndPoint(localIp, int.Parse(INI.IniSet.ReadSet("localport")));
                receiveUdpClient = new UdpClient(localIPEndPoint);
                // 设置RequestHandler
                conD.ConnectionString = @"data source=" INI.IniSet.ReadSet("datasource") ";integrated security=sspi;database=rdasDBbyt;";
                int sleepCount = 0;
                while (!CheckConnectionAvailableBySql(conD.ConnectionString))
                {
                    Thread.Sleep(1000);
                    if (sleepCount > 60)
                    {
                        break;
                    }
                }
                conD.Open();
                //接收线程
                threadReceive = new Thread(ReceiveMessage);
                threadReceive.Start();
                
            }
            catch (Exception ex)
            {
                Logs.addLog("Receive", ex.Message);
                ReceiveToolStripMenuItem.Enabled = true;
                StopToolStripMenuItem.Enabled = false;
                Logs.addLog("数据库或网络无法使用,请恢复后重启程序!",ex.Message);
                MessageBox.Show("数据库或网络无法使用,请恢复后重启程序!");
                //Application.ExitThread();
                Process[] pross = Process.GetProcessesByName("SendDataToCenter");
                if (pross.Length > 0)
                {
                    foreach (Process pro in pross)
                    {
                        pro.Kill();
                    }
                }
                pross = Process.GetProcessesByName("DataRecalculation");
                if (pross.Length > 0)
                {
                    foreach (Process pro in pross)
                    {
                        pro.Kill();
                    }
                }
                Process.GetCurrentProcess().Kill();
                
            }
        }
        private void ReceiveMessage()
        {
            
            IPEndPoint remoteIPEndPoint = new IPEndPoint(IPAddress.Any, 0);
            {
                try
                {
                    ////异步方式
                    udpState.e = remoteIPEndPoint;
                    udpState.u = receiveUdpClient;
                    AsyncCallback callBack = new AsyncCallback(ReadComplete);
                    receiveUdpClient.BeginReceive(callBack, udpState);
                }
                catch (Exception ex)
                {
                    Logs.addLog("ReceiveMessage", ex.Message);
                }
            }
        }
        /*
         * 定界符:“<<<<”(起始符,4个字节),“>>>>”(结束符,4个字节),时间戳(UTC时间)占4个字节
         * 机组状态数据:
         * 一共八个状态,数据总长度17(8 5 4)个字节(包括CRC校验,不包括起止定界符)
         * 机组发电数据:
         * 一共七十六个数据,数据总长度313(76*4 5 4)个字节(包括CRC校验,不包括起止定界符)
         * 机组抄表数据:
         * 一共一百二十个数据,数据总长度489(120*4 5 4)个字节(包括CRC校验,不包括起止定界符)
         * 水情数据:
         * 一共7个数据,数据总长度37(7*4 5 4)个字节(包括CRC校验,不包括起止定界符)
         */
        private void ReadComplete(IAsyncResult ar)
        {
            try
            {
                UdpClient u = (UdpClient)((UdpState)(ar.AsyncState)).u;
                IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e;

                Byte[] receiveBytes = u.EndReceive(ar, ref e);
                Thread.Sleep(100);
                //MessageBox.Show(BitConverter.ToString( receiveBytes).Replace("-", "") "    " receiveBytes.Length.ToString());
                //在这里对接收到的数据进行处理
                //
                int iFrameStart = Encoding.ASCII.GetString(receiveBytes).IndexOf("<<<<");
                //string xxxxx = Encoding.ASCII.GetString(receiveBytes);
                //MessageBox.Show(xxxxx);
                //MessageBox.Show(Encoding.ASCII.GetString(receiveBytes).Length.ToString());
                int iFrameEnd = Encoding.ASCII.GetString(receiveBytes).IndexOf(">>>>");
                
                if (iFrameStart > -1 && iFrameEnd > -1 && receiveBytes.Length == 512)
                {
                    byte[] receivedFrame = new byte[iFrameEnd - iFrameStart - 4];
                    Array.Copy(receiveBytes, iFrameStart 4, receivedFrame, 0, iFrameEnd - iFrameStart - 4);
                    if (receivedFrame.Length > 5 && receivedFrame[0] == 0xa5)
                    {
                        DateTime timeStamp = UTCToDateTime(BitConverter.ToInt32(receivedFrame, 3));//读取时间戳
                        switch (receivedFrame[2])
                        {
                                //机组状态
                            case 0x00:
                                byte[] unitState = new byte[17];
                                Array.Copy(receivedFrame, 0, unitState, 0, 17);
                                if (CRC.CRC.CRC16cf(unitState, unitState.Length) == 0)
                                {
                                    string timeMark = "";
                                    if (receivedFrame[1] == 0x01)//整点数据,格式化时间
                                    {
                                        timeMark = timeStamp.ToString("yyyy/MM/dd HH:00:00");
                                    }
                                    else
                                    {
                                        timeMark = timeStamp.ToString();
                                    }
                                    if (conD.State == ConnectionState.Open)
                                    {
                                        cmdD.CommandText = "insert into t_UnitState values('" timeMark "',"
                                            receivedFrame[7].ToString() ","
                                            receivedFrame[8].ToString() ","
                                            receivedFrame[9].ToString() ","
                        receivedFrame[10].ToString() ","
                                            receivedFrame[11].ToString() ","
                                            receivedFrame[12].ToString() ","
                                            receivedFrame[13].ToString() ","
                                            receivedFrame[14].ToString() ");"
                                            ;
                                        cmdD = new SqlCommand(cmdD.CommandText, conD);
                                        cmdD.ExecuteNonQuery();
                                    }
                                }
                                break;
                                //机组发电
                            case 0x01:
                                byte[] unitPower = new byte[313];
                                Array.Copy(receivedFrame, 0, unitPower, 0, 313);
                                if (CRC.CRC.CRC16cf(unitPower, unitPower.Length) == 0)
                                {
                                    string timeMark = "";
                                    if (receivedFrame[1] == 0x01)//整点数据,格式化时间
                                    {
                                        timeMark = timeStamp.ToString("yyyy/MM/dd HH:00:00");
                                    }
                                    else
                                    {
                                        timeMark = timeStamp.ToString();
                                    }
                                    if (conD.State == ConnectionState.Open)
                                    {
                                        cmdD.CommandText = "insert into t_UnitPower values('" timeMark "',"
                                            BitConverter.ToSingle(receivedFrame, 7).ToString("f2") ","
                                            BitConverter.ToSingle(receivedFrame, 11).ToString("f2") ","
                                            BitConverter.ToSingle(receivedFrame, 15).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 19).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 23).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 27).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 31).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 35).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 39).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 43).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 47).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 51).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 55).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 59).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 63).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 67).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 71).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 75).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 79).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 83).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 87).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 91).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 95).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 99).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 103).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 107).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 111).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 115).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 119).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 123).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 127).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 131).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 135).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 139).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 143).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 147).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 151).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 155).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 159).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 163).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 167).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 171).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 175).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 179).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 183).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 187).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 191).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 195).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 199).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 203).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 207).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 211).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 215).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 219).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 223).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 227).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 231).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 235).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 239).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 243).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 247).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 251).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 255).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 259).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 263).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 267).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 271).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 275).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 279).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 283).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 287).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 291).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 295).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 299).ToString() ","
                        BitConverter.ToSingle(receivedFrame, 303).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 307).ToString() ");"
                                            ;
                                        cmdD = new SqlCommand(cmdD.CommandText, conD);
                                        cmdD.ExecuteNonQuery();
                                    }
 
                                }
                                break;
                                //机组抄表
                            case 0x02:
                                byte[] unitPowerRead = new byte[489];
                                Array.Copy(receivedFrame, 0, unitPowerRead, 0, 489);
                                if (CRC.CRC.CRC16cf(unitPowerRead, unitPowerRead.Length) == 0)
                                {
                                    string timeMark = "";
                                    if (receivedFrame[1] == 0x01)//整点数据,格式化时间
                                    {
                                        timeMark = timeStamp.ToString("yyyy/MM/dd HH:00:00");
                                    }
                                    else
                                    {
                                        timeMark = timeStamp.ToString();
                                    }
                                    if (conD.State == ConnectionState.Open)
                                    {
                                        cmdD.CommandText = "insert into t_UnitPowerRead values('" timeMark "',"
                                            BitConverter.ToSingle(receivedFrame, 7).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 11).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 15).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 19).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 23).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 27).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 31).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 35).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 39).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 43).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 47).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 51).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 55).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 59).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 63).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 67).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 71).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 75).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 79).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 83).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 87).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 91).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 95).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 99).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 103).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 107).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 111).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 115).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 119).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 123).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 127).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 131).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 135).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 139).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 143).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 147).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 151).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 155).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 159).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 163).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 167).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 171).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 175).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 179).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 183).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 187).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 191).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 195).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 199).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 203).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 207).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 211).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 215).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 219).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 223).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 227).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 231).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 235).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 239).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 243).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 247).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 251).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 255).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 259).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 263).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 267).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 271).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 275).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 279).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 283).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 287).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 291).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 295).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 299).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 303).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 307).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 311).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 315).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 319).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 323).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 327).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 331).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 335).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 339).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 343).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 347).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 351).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 355).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 359).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 363).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 367).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 371).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 375).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 379).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 383).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 387).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 391).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 395).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 399).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 403).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 407).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 411).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 415).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 419).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 423).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 427).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 431).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 435).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 439).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 443).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 447).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 451).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 455).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 459).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 463).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 467).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 471).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 475).ToString() ","
                        BitConverter.ToSingle(receivedFrame, 479).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 483).ToString() ");"
                                            ;
                                        cmdD = new SqlCommand(cmdD.CommandText, conD);
                                        cmdD.ExecuteNonQuery();
                                    }
 
                                }
                                break;
                                //水情数据
                            case 0x03: 
                                byte[] water = new byte[37];
                                Array.Copy(receivedFrame, 0, water, 0, 37);
                                if (CRC.CRC.CRC16cf(water, water.Length) == 0)
                                {
                                    string timeMark = "";
                                    if (receivedFrame[1] == 0x01)//整点数据,格式化时间
                                    {
                                        timeMark = timeStamp.ToString("yyyy/MM/dd HH:00:00");
                                    }
                                    else
                                    {
                                        timeMark = timeStamp.ToString();
                                    }
                                    if (conD.State == ConnectionState.Open)
                                    {
                                        cmdD.CommandText = "insert into t_Water values('" timeMark "',"
                                            BitConverter.ToSingle(receivedFrame, 7).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 11).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 15).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 19).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 23).ToString() ","
                        BitConverter.ToSingle(receivedFrame, 27).ToString() ","
                                            BitConverter.ToSingle(receivedFrame, 31).ToString() ");"
                                            ;
                                        cmdD = new SqlCommand(cmdD.CommandText, conD);
                                        cmdD.ExecuteNonQuery();
                                    }
                                }
                                break;

                            default:
                                break;
                        }//end switch
                    }//end if
                }//end if
            }//end try
            catch (Exception ex)
            {
                Logs.addLog("接收数据完成", ex.Message);
            }
            try
            {
                if (receiveUdpClient != null)
                {
                    AsyncCallback callBack = new AsyncCallback(ReadComplete);
                    receiveUdpClient.BeginReceive(callBack, udpState);
                }
            }
            catch (Exception ex)
            {
                Logs.addLog("udp监听出错", ex.Message);
            }
        }
        private void StopToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                ReceiveToolStripMenuItem.Enabled = true;
                StopToolStripMenuItem.Enabled = false;
                threadReceive.Abort();
                conD.Close();
                receiveUdpClient.Close();
                
            }
            catch (Exception ex)
            {
                //关闭线程异常
                //MessageBox.Show("线程异常,请重新启动!");
                this.Close();
            }
        }
        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            try
            {
                if (threadReceive.IsAlive)
                {
                    threadReceive.Abort();
                }
            }
            catch (Exception ex)
            { }
        }
        private void SetToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                Set set = new Set();
                set.Show();
            }
            catch (Exception ex)
            {
 
            }
        }
        private void StartWaterCaculationToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                StartWaterCaculationToolStripMenuItem.Enabled = false;
                UpdateStatusBar();
                WaterCaculationBYT wcbyt = new WaterCaculationBYT();
                wcbyt.SetTimers();
                wcbyt.StartTimers();
                MonthStatistics ms = new MonthStatistics("sa", INI.IniSet.ReadSet("pwd"));
                YearStatistics ys = new YearStatistics("sa", INI.IniSet.ReadSet("pwd"));
                ms.monthStatisticsStart(300000);
                ys.YearStatisticsStart(300000);

                //复制历史数据
                addHistoricalData ahd = new addHistoricalData(3600000);
                ahd.timStart();
                //复制闸门数据
                TempGate tg = new TempGate();
                tg.startTime();

            }
            catch (Exception ex)
            {
                Logs.addLog("StartWaterCaculation", ex.Message);
                StartWaterCaculationToolStripMenuItem.Enabled = true;
            }
        }
        /// <summary>
        /// 测试连接字符串
        /// </summary>
        /// <param name="ConnectionString"></param>
        /// <returns></returns>
        public static bool TestConnection(string ConnectionString)
        {
            bool result = true;

            SqlConnection m_myConnection = new SqlConnection(ConnectionString);
            try
            {
                m_myConnection.Open();

                return result;

            }
            catch
            {
                result = false;

                return result;
            }
            finally
            {
                m_myConnection.Close();
            }

        }
        /// <summary>
        /// 延时函数
        /// </summary>
        /// <param name="delayTime">需要延时多少秒</param>
        /// <returns></returns>
        public static bool Delay(int delayTime)
        {
            DateTime now = DateTime.Now;
            int s;
            do
            {
                TimeSpan spand = DateTime.Now - now;
                s = spand.Seconds;
                //Application.DoEvents();
            }
            while (s < delayTime);
            return true;
        }
   //转换为UTC时间(从1970年1月1日开始,国际时间相差8小时)
        private static Int32 DateTimeToUTC(DateTime dt)
        {
            DateTime dateNow = dt.AddHours(-8);
            DateTime st = new DateTime(1970, 01, 01, 00, 00, 00);
            TimeSpan interval = dateNow - st;
            Int32 t = (((interval.Days * 24 interval.Hours) * 60) interval.Minutes) * 60 interval.Seconds;
            return t;
        }
        //UTC时间转为现实时间
        private static DateTime UTCToDateTime(Int32 utc)
        {
           DateTime dtZone = new DateTime(1970, 1, 1, 0, 0, 0);
           dtZone = dtZone.AddSeconds(utc);
           return dtZone.ToLocalTime();
        }
        private void Form2_Load(object sender, EventArgs e)
        {

        }
 
    }
    class UdpState
    {
        public UdpClient u;
        public IPEndPoint e;
    }
}