在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → 数据接收源码下载

数据接收源码下载

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.22M
  • 下载次数:31
  • 浏览次数:340
  • 发布时间:2013-10-09
  • 实例类别:C#语言基础
  • 发 布 人:wcqwcq
  • 文件格式:.7z
  • 所需积分:2
 相关标签: asd

实例介绍

【实例简介】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;
    }
}



标签: asd

实例下载地址

数据接收源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警