C#实现TCP通讯协议

版权声明: https://blog.csdn.net/Bibabu135766/article/details/79483014

本人小白一个,初次使用C#,希望各位大神对小白不足之处能指点一下,O(∩_∩)O谢谢

项目需求:公司锡膏室有四台冰箱,需要对该四台冰箱的温湿度实时采集同时以曲线图方式Show到一块看板上

思路:1,需要将设备发送的数据实时存储至数据库(使用TCP通讯协议实时抓取数据)

         2,将数据以曲线图方式Show至看板上(需要使用到AJAX以及强大的JS库【ECharts】})

一,实现第一个数据抓取:

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Data.SqlClient;
using System.Data;

namespace TimeServer
{
    class TimeServer
    {
        //private const int portNum = 13;
        //[STAThread]
        static void Main(string[] args)
        {
            TcpClient client = null;
            NetworkStream stream = null;
            byte[] buffer = null;
            string receiveString = null;

            IPAddress localIP = IPAddress.Parse("192.168.1.130");
            int localPort = 9438;
            TcpListener listener = new TcpListener(localIP, localPort);//用本地IP和端口实例化Listener 
            listener.Start();//开始监听 
            while (true)
            {
                client = listener.AcceptTcpClient();//接受一个Client 
                buffer = new byte[client.ReceiveBufferSize];
                stream = client.GetStream();//获取网络流 
                stream.Read(buffer, 0, buffer.Length);//读取网络流中的数据 
                receiveString = Encoding.Default.GetString(buffer).Trim('\0');//转换成字符串
                string WD = receiveString.Substring(43, 4);
                string SD = receiveString.Substring(48, 4);
                string Mdl = receiveString.Substring(22, 10);
                string ZOOM = receiveString.Substring(33, 1);
                string SendTime = "20" + receiveString.Substring(4, 17) + ":000";
                if (Mdl == "0072916200") { Mdl = "冰箱-01"; }
                //else if(Mdl == "") { Mdl = "冰箱-02"; }
                //else if(Mdl == "") { Mdl = "冰箱-03"; }
                //else{ Mdl = "冰箱-04";}
                SqlConnection sqlcon = new SqlConnection("Data Source=****;Initial Catalog=****;User ID=***;pwd=*****");
                string addx = "INSERT INTO PCA_REPORT..Temperature VALUES ('" + Mdl + "','" + WD + "','" + SD + "','" + SendTime + "',getdate(),'" + ZOOM + "')";
                //string addx = "INSERT INTO PCA_REPORT.dbo.Room_Model  VALUES('" + receiveString + "','Test')";
                //SqlCommand sc = new SqlCommand(addx, sqlcon);
                //int cc = sc.ExecuteNonQuery();
                DataSet ds = new DataSet();
                SqlDataAdapter adapter = new SqlDataAdapter(addx, sqlcon);
                adapter.Fill(ds);
                stream.Close();//关闭流 
                client.Close();//关闭Client 
                Console.WriteLine(receiveString);
                
            } 
        }
    }
}

1,将设备与该程式设置为同一网段IP

2,将设备IP指向与当前程式运行的IP(以上程式表明设备指向的IP是:192.168.1.130,指向端口是:9438)

设置以上后,程式就可以接受设备传输的数据了

二,实现将数据以曲线图方式Show至看板上

可跳转至:https://download.csdn.net/download/bibabu135766/10274321

猜你喜欢

转载自blog.csdn.net/Bibabu135766/article/details/79483014