Example #1
0
        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,
            });
        }
Example #2
0
        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;
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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;
                }
            }
        }
Example #5
0
 public Player(ICrowPort crowPort)
 {
     _crowPort = crowPort;
 }