コード例 #1
0
        internal LSResponseMessage(PLCMessageTypes messageType, LSRequestMessage source, byte[] data)
            : base(messageType, source.UniqueId)
        {
            OriginRequestType = source.RequestType;
            OriginDataType    = source.DataType;
            OriginAddress     = source.OriginAddress;
            DomainType        = OriginAddress.Substring(1, 1);
            DataType          = OriginAddress?.Substring(2, 1);
            Address           = OriginAddress?.Remove(0, 3);
            Addresses         = (from i in Address?.Split('.')
                                 select int.Parse(i)).ToArray();
            RequestDomainType = source.RequestAddress.Substring(1, 1);
            RequestDataType   = source.RequestAddress.Substring(2, 1);
            RequestAddress    = source.RequestAddress.Remove(0, 3);
            RequestAddresses  = (from i in RequestAddress?.Split('.')
                                 select int.Parse(i)).ToArray();
            switch (messageType)
            {
            case PLCMessageTypes.Ascii:
                _SetAscii(data);
                break;

            case PLCMessageTypes.Binary:
                _SetBinary(data);
                break;
            }
        }
コード例 #2
0
ファイル: Equipment.cs プロジェクト: Hengyin-Group/IntoPC
        //此方法仅限测试使用
        public string GetDevice(string token)
        {
            string url     = RequestAddress.server + RequestAddress.GetDevice;
            string tempVal = RequestAddress.Rep_Header_Resp(token, url, "POST");

            return(tempVal);
        }
コード例 #3
0
ファイル: Equipment.cs プロジェクト: Hengyin-Group/IntoPC
        public string GetEquipIP(string token, string id, string equipType)
        {
            //string url = RequestAddress.server + RequestAddress.GetEquipIP+"?token="+token+"&id="+id+ "&equipType="+equipType;
            string url    = RequestAddress.HostServer + RequestAddress.GetEquipIP + "?token=" + token + "&id=" + id + "&equipType=" + equipType;
            string temVal = RequestAddress.Rep_Header_Resp(token, url, "POST");

            return(temVal);
        }
コード例 #4
0
        MultiProtocolRequest(byte deviceId, RequestAddress address, bool isWriteRequest, ResponseInfo responseInfo, IEnumerable <IDataEntity> dataEntities)
        {
            DeviceId       = deviceId;
            Address        = address;
            IsWriteRequest = isWriteRequest;
            var addressInfo = Address.GetInfo();

            _responseInfo   = responseInfo;
            _hasLengthField = _responseInfo.ResponseFullLength.IsUnknown;

            if (address != RequestAddress.NONE)
            {
                _commandWords = new ushort[]
                {
                    (ushort)((DeviceId << 9) | ((~0x80) & Address.GetInfo().Address) | (IsWriteRequest ? 1 << 7 : 0)),
                    0x0000
                };
                _header = wordsToBytes(_commandWords).ToArray();
            }

            Serialized = serialize(dataEntities);

            IEnumerable <byte> serialize(IEnumerable <IDataEntity> entities)
            {
                if (address == RequestAddress.NONE)
                {
                    return(new byte[0]);
                }
                else
                {
                    var dataBytes = entities
                                    .Select(e => e.RawValue)
                                    .Flatten()
                                    .ToArray();
                    var zeroTrailShouldBeAdded = dataBytes.Length % 2 == 1;
                    var actualLength           = zeroTrailShouldBeAdded
                        ? dataBytes.Length + 1
                        : dataBytes.Length;
                    var requestBytes = new Enumerable <byte>()
                    {
                        _header,
                        IsWriteRequest // If there is data - we need to add length of the data
                            ? wordsToBytes(((ushort)actualLength).ToSequence())
                            : new byte[0],
                        dataBytes,
                        zeroTrailShouldBeAdded
                            ? new byte[1]
                            : new byte[0]
                    };

                    requestBytes.Add(wordsToBytes(_checksum.ComputeChecksum(requestBytes).ToSequence()));

                    return(requestBytes);
                }
            }
        }
コード例 #5
0
 /// <summary>
 /// check if the entered address is correct
 /// </summary>
 private void ValidateInput()
 {
     if (!string.IsNullOrEmpty(RequestAddress))
     {
         int len = RequestAddress.Length;
         int lengthDifference = len - TotalNumberOfBits;
         if (IsBinary)
         {  //check if the binary requested address does not contain hexcadecimal or any other characters in it
             if (!string.IsNullOrEmpty(RequestAddress))
             {
                 TotalLength = TotalNumberOfBits;
                 for (int i = 0; i < len; i++)
                 {
                     if (RequestAddress[i] > '1' || RequestAddress[i] < '0')
                     {
                         RequestAddress = RequestAddress.Remove(i, 1);
                         len            = RequestAddress.Length;
                     }
                 }
             }
             //check the size of the requested address in the binary form
             if (RequestAddress.Length > TotalNumberOfBits)
             {
                 //RequestAddress = RequestAddress.Remove(len - lengthDifference, lengthDifference);
                 RequestAddress = RequestAddress.Remove(0, lengthDifference);
             }
         }
         else
         {
             if (!string.IsNullOrEmpty(RequestAddress))
             {
                 for (int i = 0; i < len; i++)
                 {
                     if (RequestAddress[i] >= '0' && RequestAddress[i] <= '9' || RequestAddress[i] >= 'a' && RequestAddress[i] <= 'f' || RequestAddress[i] >= 'A' && RequestAddress[i] <= 'F')
                     {
                         continue;
                     }
                     RequestAddress = RequestAddress.Remove(i, 1);
                     len            = RequestAddress.Length;
                 }
             }
             int extraBits = TotalNumberOfBits % 4;
             if (extraBits > 0)
             {
                 extraBits = 1;
             }
             TotalLength = TotalNumberOfBits / 4 + extraBits;
             if (RequestAddress.Length > (TotalNumberOfBits / 4 + extraBits))
             {
                 lengthDifference = len - (TotalNumberOfBits / 4 + extraBits);
                 RequestAddress   = RequestAddress.Remove(0, lengthDifference);
             }
         }
     }
 }
コード例 #6
0
 public Address MapFromRequest(RequestAddress address)
 {
     return(new Address
     {
         FirstName = address.FirstName,
         LastName = address.LastName,
         Company = address.Company,
         AddressLine1 = address.AddressLine1,
         AddressLine2 = address.AddressLine2,
         PostalCode = address.PostalCode,
         City = address.City,
         CountryCode = address.CountryCode,
         Phone = address.Phone
     });
 }
コード例 #7
0
 internal static MultiProtocolRequest CreateWriteRequest(byte deviceId, RequestAddress address, IEnumerable <IDataEntity> data)
 {
     return(new MultiProtocolRequest(deviceId, address, true,
                                     new ResponseInfo(ResponseReadMode.STANDARD_PROTOCOL, address.GetInfo().WriteResponse.GetInfo().FullResponseLength, null), data));
 }
コード例 #8
0
 internal static MultiProtocolRequest CreateReadRequest(byte deviceId, RequestAddress address)
 {
     return(new MultiProtocolRequest(deviceId, address, false,
                                     new ResponseInfo(ResponseReadMode.STANDARD_PROTOCOL, address.GetInfo().ReadResponse.GetInfo().FullResponseLength, null), new DataEntity[0]));
 }
コード例 #9
0
 MultiProtocolRequest(byte deviceId, RequestAddress address, bool isWriteRequest, ResponseInfo responseInfo)
     : this(deviceId, address, isWriteRequest, responseInfo, new IDataEntity[0])
 {
 }
コード例 #10
0
 public async Task <IActionResult> GetPositionByAddress([FromBody] RequestAddress requestAddress)
 {
     return(Json(await _googleMapManager.GetLocationByAddress(requestAddress.Address)));
 }
コード例 #11
0
ファイル: RUSDeviceProxyBase.cs プロジェクト: GataullinRR/EX1
 public virtual Task <ReadRequestResult> ReadAsync(RequestAddress request, AsyncOperationInfo operationInfo = null)
 => _base.ReadAsync(request, operationInfo);
コード例 #12
0
ファイル: RUSDeviceProxyBase.cs プロジェクト: GataullinRR/EX1
 public virtual Task <BurnRequestResult> BurnAsync(RequestAddress request, IEnumerable <IDataEntity> entities, AsyncOperationInfo operationInfo = null)
 => _base.BurnAsync(request, entities, operationInfo);