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

【电脑与MCGS通过ModbusTCP协议通讯示例在C#中用到的基础知识】这个内容主要是记录一下我在项目中用知识,防止忘了
链接服务器

//System.Net; 添加引用空间 //System.Net.Sockets; //创建个一Socket对象,使用IPv4地址,使用数据流,使用TCP协议 SocketsocketSend = 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)

创建线程
// 创建一个线程,参数是一个方法 Threadth = 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)); ``

    推荐阅读