电脑与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));
``
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Docker应用:容器间通信与Mariadb数据库主从复制
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 第326天
- Shell-Bash变量与运算符
- 逻辑回归的理解与python示例
- Guava|Guava RateLimiter与限流算法
- 我和你之前距离
- CGI,FastCGI,PHP-CGI与PHP-FPM
- 原生家庭之痛与超越