Пример #1
0
 /// <summary>
 /// 使用功能码H05进行单线圈写入
 /// </summary>
 /// <param name="address">起始地址</param>
 /// <param name="coil">要写入的状态</param>
 /// <returns></returns>
 public OperateResult <bool> write_Bool(byte address, coil coil)
 {
     try
     {
         mutex.WaitOne(3000);
         if (this.Socket_ready)
         {
             Thread.Sleep(10);
             this.socket.Send(this.Modbus_TCP.GenerateH05(function.H05, 1, address, coil)); //发送报文
             byte[] data = new byte[100];                                                   //定义数据接收数组
             this.socket.Receive(data);                                                     //接收数据到data数组
             mutex.ReleaseMutex();
             return(new OperateResult <bool>()
             {
                 Content = Convert.ToBoolean(coil), ErrorCode = "0", IsSuccess = true
             });
         }
         else
         {
             throw new AggregateException("未连接设备");
         }
     }
     catch (Exception e)
     {
         mutex.ReleaseMutex();
         return(Err <bool>(e));
     }
 }
Пример #2
0
 byte[] Modbus_name.GenerateH05(function function, ushort Station, ushort start, coil coil)
 {
     return(message(modbus_Name.GenerateH05(function, Station, start, coil).ToList()));
 }
Пример #3
0
 /// <summary>
 /// 实现对下位机进行线圈写入--H05
 /// </summary>
 /// <param name="function">功能码枚举</param>
 /// <param name="Station">访问的站号</param>
 /// <param name="start">写入起始地址</param>
 /// <param name="coil">要写入的状态</param>
 /// <returns></returns>
 byte[] Modbus_name.GenerateH05(function function, ushort Station, ushort start, coil coil)
 {
     byte[] message = new byte[6];
     message[0] = Convert.ToByte(Station);
     message[1] = Convert.ToByte(function);
     for (int i = 0; i < 2; i++)
     {
         message[2 + i] = (int_to_byte(start)[i]);
     }
     message[4] = Convert.ToByte(coil);
     return(this.GetCRCDatas(message));
 }