public async Task <GetChannelValueRsp> GetSignalValueAsync(ICrowPort crowPort, string address, BlockInfo block) { byte addressByte = Convert.ToByte(address); var result = new GetChannelValueRsp() { RecData = new List <ChannelRspValue>() }; var list = new List <ChannelRspValue>(); UInt16 registerAddress = block.StartRegisterAddress; UInt16 registerCount = (UInt16)(block.EndRegisterAddress - block.StartRegisterAddress + 1); var req = new GetSignalValueReq(addressByte, registerAddress, registerCount); var rsp = await crowPort.RequestAsync(req, new Func <byte[], GetSignalValueRsp>(rspByte => new GetSignalValueRsp(block.StartRegisterAddress, rspByte, block.ChannelInfos, IsHighByteBefore))); if (!rsp.Success) { return(new GetChannelValueRsp() { Message = rsp.Message, Success = false }); } list.AddRange(rsp.RecData); return(new GetChannelValueRsp() { Success = true, RecData = list, }); }
public Main() { InitializeComponent(); var portName = ConfigurationManager.AppSettings["portName"]; var baudRate = ConfigurationManager.AppSettings["baudRate"]; _crowPort = new CrowPort(new TopPort(new SerialPort(portName, int.Parse(baudRate)), new Parser.Parsers.TimeParser(50))); _crowPort.OnSentData += _crowPort_OnSentData; _crowPort.OnReceivedData += _crowPort_OnReceivedData; }
public DWProtocol(string addr, ICrowPort crowPort, List <ProtocolComponent> protocols) { _ADWProtocols = protocols; _protocol = new ProtocolModbus.ProtocolModbus(); _crowPort = crowPort; _address = addr; for (int i = 0; i < _ADWProtocols.Count; i++) { UInt16 END = _ADWProtocols[i].RegisterAddress; switch (_ADWProtocols[i].ValueType) { case RegisterValueType.FloatType: case RegisterValueType.UInt32Type: END++; break; case RegisterValueType.UInt16Type: break; default: break; } var block = new BlockInfo() { StartRegisterAddress = _ADWProtocols[i].RegisterAddress, EndRegisterAddress = END, ChannelInfos = new List <ChannelInfo>() { new ChannelInfo() { ChannelId = i, RegisterAddress = _ADWProtocols[i].RegisterAddress, ValueType = _ADWProtocols[i].ValueType } } }; ADWProtocols.Add(_ADWProtocols[i].Name, block); (_protocol as ProtocolModbus.ProtocolModbus).BlockInfos.Add(block); } }
public async Task SetSignalValueAsync(ICrowPort crowPort, string address, List <WBlockInfo> ts) { byte addressByte = Convert.ToByte(address); foreach (var item in ts) { var req = new SetSignalValueReq(addressByte, item.RegisterAddress, item.Data); try { var rsp = await crowPort.RequestAsync(req, new Func <byte[], SetSignalValueRsp>(rspByte => new SetSignalValueRsp(rspByte))); if (!rsp.Success) { throw new Exception($"{item.RegisterAddress}返回:设置失败"); } } catch (Exception) { throw; } } }
public Player(ICrowPort crowPort) { _crowPort = crowPort; }