电脑与MCGS通过ModbusTCP协议通讯示例(三)

看了您的电脑与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;
            }
        }