看了您的电脑与MCGS通信的例子,从触摸屏读取都没有问题,写入的时候,好像就没写进去,请您指导指导。
这个是我在项目中使用的程序,你试一下看看
/// <summary>
/// 写入数据
/// </summary>
/// <param name="sok">网口</param>
/// <param name="a">地址</param>
/// <param name="b">数据</param>
public void Write1(Socket sok, int a, int b)
{
try
{
byte[] buffer = new byte[15];
//事务处理序号
buffer[0] = 0x00;
buffer[1] = 0x00;
//协议标识符
buffer[2] = 0x00;
buffer[3] = 0x00;
//随后字节数
buffer[4] = 0x00;
buffer[5] = 0x06;
//单元标识符
buffer[6] = 0x01;//MBAP报文头
//功能码
buffer[7] = 0x0F;
byte[] buffer1 = BitConverter.GetBytes(a);
//寄存器起始地址
buffer[8] = buffer1[1];
buffer[9] = buffer1[0];
//寄存器起始地址
//buffer[8] = 0x00;
//buffer[9] = 0x01;
byte[] buffer2 = BitConverter.GetBytes(b);
//请求字节长度
buffer[10] = 0x00;
buffer[11] = 0x01;
buffer[12] = 0x01;
buffer[13] = buffer2[0];
buffer[14] = buffer2[1];
//byte[] buffer1 = BitConverter.GetBytes(a);
////把字节数组进行顺序颠倒
//buffer1 = SequenceReversal(buffer1);
//buffer[12] = (byte)buffer1.Length;//设置要发送字符的长度
////设置一个新的字节数组
//byte[] buffer3 = new byte[buffer.Length + buffer1.Length];
////把buffer中的内容拷贝到buffer3中
//Buffer.BlockCopy(buffer, 0, buffer3, 0, buffer.Length);
////把buffer1中的内容拷贝到buffer3中,位置在buffer内容的后面
//Buffer.BlockCopy(buffer1, 0, buffer3, buffer.Length * sizeof(byte), buffer1.Length);
sok.Send(buffer);//从网口发送字符
}
catch
{
disconnectflag = true;
}
}