public void F06(int address, int data, ReturnReceive callback) { CommandData command = CommandCode.F06(address, data); AddListSand(new ListSendData { CommandData = command, RR = callback }); }
/// <summary> /// 设置单个线圈 功能码=F05 /// </summary> /// <param name="address">设置线圈地址</param> /// <param name="data">设置线圈状态 true通,false断</param> /// <returns>返回 IsSuccess:请求结果True=成功,Message:信息,Data.Data:返回数据</returns> public void F05(int address, Boolean data, ReturnReceive callback) { CommandData command = CommandCode.F05(address, data); AddListSand(new ListSendData { CommandData = command, RR = callback }); //Send(command, callback); //return receive == null ? false : ReceiveData.F05(receive); }
/// <summary> /// 执行Modbus请求&回去返回数据 /// </summary> /// <param name="bs">Modbus命令</param> /// <param name="receiveDL">处理返回数据方法</param> /// <returns>返回操作结果数据</returns> public void Send(byte[] bs, ReturnReceive returnReceive) { if (Client != null && Client.Connected && IsSuccess) { //new Thread(async () => //{ try { Client.Send(bs); Client.Receive(ReviceByte); returnReceive?.Invoke(ReviceByte); //returnReceive?.Invoke(new CallbackData { Bytes = ReviceByte }); //if (returnReceive != null && ReviceState) //{ // Client.Receive(ReviceByte); //} //Client.Send(bs); //if (returnReceive != null) //{ // Client.Receive(ReviceByte); // //string receiveStr = Encoding.ASCII.GetString(ReviceByte, 0, bytesRec); // returnReceive?.Invoke(new CallbackData { Bytes = ReviceByte }); // ReviceState = false; //} //else //{ // ReviceState = true; //} } catch (SocketException ex) { IsSuccess = false; ModbusLinkError?.Invoke(this.Name, $"{Name}请求错误--{ex.Message}"); } //}).Start(); } else { if (Client == null || !Client.Connected) { IsSuccess = false; } } }