资讯详情

TAS-10-428 c#驱动编程笔记

制造商没有提供例子 我会分享我写的东西 将模块设置到TCP-SERVER模式下 在这里插入图片描述 每一页都要 点读取参数

开关 继电器1的代码 在VS2013下测试通过

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; using System.IO;  namespace WindowsFormsApplication1 { 
            public partial class Form1 : Form     { 
                public Form1()         { 
                    InitializeComponent();         }          private void Form1_Load(object sender, EventArgs e)         { 
                 }          /****************************************************************************************/         public byte[] StringToHex(string sendData)
        { 
       //string转Hex
            string[] strArray = sendData.Split(new char[] { 
        ',', ',', '\r', '\n', ' ', '\t' });
            int decNum = 0;
            int i = 0;
            byte[] sendBuffer = new byte[strArray.Length];  //发送数据缓冲区

            foreach (string str in strArray)
            { 
       
                try
                { 
       
                    decNum = Convert.ToInt16(str, 16);
                    sendBuffer[i] = Convert.ToByte(decNum);
                    i++;
                }
                catch
                { 
       
                    //MessageBox.Show("字节越界,请逐个字节输入!", "Error"); 
                }
            }
            return sendBuffer;
        }

        /****************************************************************************************/
        public string HexToString(byte[] data)
        { 
       //Hex转String
            StringBuilder sb = new StringBuilder(data.Length * 3);
            foreach (byte b in data)
            { 
       
                sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' '));
            }

            return sb.ToString().ToUpper();
        }

        //TCP Client 接收 *************************************************************************
        private void TCP_Receive(object obj)
        { 
       
            Control.CheckForIllegalCrossThreadCalls = false;
            Socket socket_R = tcpClient.Client;
            NetworkStream ns = tcpClient.GetStream();
            int MaxLen = socket_R.ReceiveBufferSize;
            while (true)
            { 
       
                //System.Threading.Thread.Sleep(1);
                if (ns.CanRead)
                { 
       
                    string s = Get_TCP_Data(socket_R, 100, MaxLen);
                    if (s.Length != 0)
                    { 
       
                        RX_Pack++;
                        string display = "\r\nReceive:" + s + "\r\n";
                        textBox3.Text += display;
                        this.textBox3.SelectionStart = this.textBox3.Text.Length;
                        this.textBox3.ScrollToCaret();
                        label6.Text = RX_Pack.ToString();
                        label8.Text = RX_Byte.ToString();
                    }
                }
            }
        }

        // 获取TCP数据 ****************************************************************************
        public string Get_TCP_Data(Socket socket, int timeout, int max_len)
        { 
       
            string result = string.Empty;
            socket.ReceiveTimeout = timeout;
            byte[] buffer = new byte[max_len];
            List<Byte> data = new List<Byte>();
            data.Clear();
            int length = 0;

            try
            { 
       
                while ((length = socket.Receive(buffer)) > 0)
                { 
       
                    for (int i = 0; i < length; i++)
                    { 
       
                        data.Add(buffer[i]);
                    }
                    break;
                }
            }
            catch
            { 
       

            }
            if ((data != null) && (data.Count > 0))
            { 
       
                RX_Byte += data.Count;
              
                result = HexToString(data.ToArray());
              
               
            }
            return result;
        }

        TcpClient tcpClient;
        Thread TCP_Rev_T;
        int RX_Pack = 0;
        int RX_Byte = 0;

        private void button1_Click(object sender, EventArgs e)
        { 
       
            if (button1.Text == "连接")
            { 
       
                tcpClient = new TcpClient();
                string ServerIP = "192.168.0.80";
                string ServerPort = "10123";
                button1.Text = "等待连接";
                try
                { 
       
                    var result = tcpClient.BeginConnect(IPAddress.Parse(ServerIP), Int32.Parse(ServerPort), null, null);
                    var sucess = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(3));
                    if (sucess)
                    { 
       
                        tcpClient.NoDelay = true;
                        TCP_Rev_T = new Thread(TCP_Receive);
                        TCP_Rev_T.Start();
                     
                        button1.Text = "断开";
                      
                    }
                    else
                    { 
       
                        tcpClient.Close();
                        textBox3.Text = "连接超时,未连接到指定服务器,请检查连接";
                        button1.Text = "连接";
                    }
                    button1.Enabled = true;
                }
                catch
                { 
       
                    MessageBox.Show("连接错误,请检查服务器IP与端口号");
                    button1.Text = "连接";
                    button1.Enabled = true;
                }
            }
           
               

        }

        private void button开继电器1_Click(object sender, EventArgs e)
        { 
       
            string TCP_Send = "11 05 00 00 FF 00 8E AA";//读取用户的输入
            NetworkStream ns = tcpClient.GetStream();

            if (ns.CanWrite)
            { 
       
                Byte[] sendBytes = null;               
                sendBytes = StringToHex(TCP_Send);
                ns.Write(sendBytes, 0, sendBytes.Length);
               
            
            }

                            
           
        }

        private void button关继电器1_Click(object sender, EventArgs e)
        { 
       
            string TCP_Send = "11 05 00 00 00 00 CF 5A ";//读取用户的输入
            NetworkStream ns = tcpClient.GetStream();

            if (ns.CanWrite)
            { 
       
                Byte[] sendBytes = null;
                sendBytes = StringToHex(TCP_Send);
                ns.Write(sendBytes, 0, sendBytes.Length);


            }

               
        }
    }
}

标签: 428号继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台