电脑与MCGS通过ModbusTCP协议通讯示例在C#中用到的基础知识

这个内容主要是记录一下我在项目中用知识,防止忘了
链接服务器

  //System.Net;添加引用空间
 //System.Net.Sockets;
 //创建个一Socket对象,使用IPv4地址,使用数据流,使用TCP协议
     Socket   socketSend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      //声明IPAddress对象用来存储IP地址
      //Parse方法用于将字符串转换成其他类型
     IPAddress ip = IPAddress.Parse("192.168.2.2");
    //获取一个网络终结点,有IP地址和端口号组成,端口号就是触屏设置的端口
    //Convert.ToInt32()方法用于将字符串转换成int型数据
    IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32("1200"));
    //把网络终结点添加到Socket类中,这样就链接上了
    //Connect方法用于链接服务器
     socketSend.Connect(point);
     //Send的方法用于将字节数组发送出去
     socketSend.Send(buffer3);
     //Receive方法用于接收字节数组,并返回字节数组的大小
      int r = socketSend.Receive(buffer)

创建线程

               // 创建一个线程,参数是一个方法 
              Thread  th = new Thread(Recive);
                //把线程设置成后台运行
                th.IsBackground = true;
                //启动线程,可以传入参数,但在声明方法时的参数列表要是object型
                th.Start();
                //终止线程
                th.Abort();

因为要跨线程访问控件,所以需要取消跨线程检测

        private void Form1_Load(object sender, EventArgs e)
        {
           
            //不做跨线程检测
            Control.CheckForIllegalCrossThreadCalls = false;
        }
//字节数组拷贝,把buffer中的数据从下标0开始拷贝到buffer3中,从下标0开始,长度位buffer.Length
  Buffer.BlockCopy(buffer, 0, buffer3, 0, buffer.Length);
  //把buffer1中的内容拷贝到buffer3中
  Buffer.BlockCopy(buffer1, 0, buffer3, buffer.Length * sizeof(byte), buffer1.Length);
  //把字符串转换成字节数组
 byte[] buffer1 = Encoding.ASCII.GetBytes(str);
 //把buffer字节数组从0开始,到r长的数据转换成字符串
  string a = Encoding.ASCII.GetString(buffer, 0, r);
  //对字符串进行删除,从零到17个字节
 a = a.Remove(0,17);
 //对 buffer字节数组进行截取,从第9个开始,截取4个,返回一个长度为4的字节数组
 buffer.Skip(9).Take(4).ToArray()
 //将16位数转换成字节数组
   byte[] buffer1 = BitConverter.GetBytes(Convert.ToUInt16(textBox1.Text));
``

你可能感兴趣的:(电脑与MCGS通过ModbusTCP协议通讯示例在C#中用到的基础知识)