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; } }
//此方法仅限测试使用 public string GetDevice(string token) { string url = RequestAddress.server + RequestAddress.GetDevice; string tempVal = RequestAddress.Rep_Header_Resp(token, url, "POST"); return(tempVal); }
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); }
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); } } }
/// <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); } } } }
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 }); }
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)); }
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])); }
MultiProtocolRequest(byte deviceId, RequestAddress address, bool isWriteRequest, ResponseInfo responseInfo) : this(deviceId, address, isWriteRequest, responseInfo, new IDataEntity[0]) { }
public async Task <IActionResult> GetPositionByAddress([FromBody] RequestAddress requestAddress) { return(Json(await _googleMapManager.GetLocationByAddress(requestAddress.Address))); }
public virtual Task <ReadRequestResult> ReadAsync(RequestAddress request, AsyncOperationInfo operationInfo = null) => _base.ReadAsync(request, operationInfo);
public virtual Task <BurnRequestResult> BurnAsync(RequestAddress request, IEnumerable <IDataEntity> entities, AsyncOperationInfo operationInfo = null) => _base.BurnAsync(request, entities, operationInfo);