/// <summary> /// DDE Server에 Request /// </summary> /// <param name="ddeItem">Request Item</param> /// <returns>함수 실행 결과 (ProtocolResult 객체)</returns> public CommonStruct.ProtocolResult Request(string ddeItem) { CommonStruct.ProtocolResult result = new CommonStruct.ProtocolResult(); string receiveValue = string.Empty; stopWatch.Start(); try { receiveValue = ddeHandle.Request(ddeItem, 1); result.funcResult.isSuccess = true; } catch (Exception ex) { receiveValue = string.Empty; result.funcResult.isSuccess = false; result.funcResult.funcException = ex; } stopWatch.Stop(); result.funcResult.totalMilliseconds = stopWatch.ElapsedMilliseconds; result.receiveData = receiveValue; stopWatch.Reset(); return(result); }
/// <summary> /// Serial Port로부터 데이터 수신 /// </summary> /// <returns>함수 실행 결과 (ProtocolResult 객체)</returns> public CommonStruct.ProtocolResult Receive() { CommonStruct.ProtocolResult result = new CommonStruct.ProtocolResult(); List <byte> receiveBytes = new List <byte>(); stopWatch.Start(); try { if (serialHandle.IsOpen) { byte[] tempReceiveByte = new byte[1]; if (serialHandle.BytesToRead > 0) { do { serialHandle.Read(tempReceiveByte, 0, tempReceiveByte.Length); receiveBytes.AddRange(tempReceiveByte); } while (serialHandle.BytesToRead > 0); if (receiveBytes.Count > 0) { result.funcResult.isSuccess = true; } else { receiveBytes = null; result.funcResult.isSuccess = false; } } else { receiveBytes = null; result.funcResult.isSuccess = false; } } else { receiveBytes = null; result.funcResult.isSuccess = false; } } catch (Exception ex) { receiveBytes = null; result.funcResult.isSuccess = false; result.funcResult.funcException = ex; } stopWatch.Stop(); result.funcResult.totalMilliseconds = stopWatch.ElapsedMilliseconds; result.receiveData = receiveBytes; stopWatch.Reset(); return(result); }
/// <summary> /// Modbus TCP 프로토콜을 사용하여 데이터 읽기 /// </summary> /// <param name="funcCode">함수 Code</param> /// <param name="beginAddress">시작 주소</param> /// <param name="readCount">데이터 수</param> /// <returns>함수 실행 결과 (ProtocolResult 객체)</returns> public CommonStruct.ProtocolResult Read(byte funcCode, ushort beginAddress, ushort readCount) { CommonStruct.ProtocolResult result = new CommonStruct.ProtocolResult(); stopWatch.Start(); try { List <byte> sendData = new List <byte>(); List <byte> recvData = new List <byte>(); byte[] beginAddressArray = BitConverter.GetBytes(beginAddress).Reverse().ToArray(); byte[] readCountArray = BitConverter.GetBytes(readCount).Reverse().ToArray(); byte[] readDataArray = new byte[2]; sendData.AddRange(hDataUnit); sendData.Add(funcCode); sendData.AddRange(beginAddressArray); sendData.AddRange(readCountArray); CommonStruct.FuncResult sendResult = tcpHandler.Send(sendData.ToArray()); if (sendResult.isSuccess) { System.Threading.Thread.Sleep(10); CommonStruct.ProtocolResult receiveResult = tcpHandler.Receive(); if (receiveResult.funcResult.isSuccess) { recvData = (List <byte>)receiveResult.receiveData; if (recvData.Count > 0) { readDataArray[0] = recvData[recvData.Count - 1]; readDataArray[1] = recvData[recvData.Count - 2]; result.receiveData = BitConverter.ToUInt16(readDataArray, 0); result.funcResult.isSuccess = true; } else { result.receiveData = null; result.funcResult.isSuccess = false; } } else { result.receiveData = null; result.funcResult.isSuccess = false; } } else { result.receiveData = null; result.funcResult.isSuccess = false; } } catch (Exception ex) { result.receiveData = null; result.funcResult.isSuccess = false; result.funcResult.funcException = ex; } stopWatch.Stop(); result.funcResult.totalMilliseconds = stopWatch.ElapsedMilliseconds; stopWatch.Reset(); return(result); }
/// <summary> /// TCP Server/Client으로부터 데이터 수신 /// </summary> /// <returns>함수 실행 결과 (ProtocolResult 객체)</returns> public CommonStruct.ProtocolResult Receive() { CommonStruct.ProtocolResult result = new CommonStruct.ProtocolResult(); List <byte> receiveBytes = new List <byte>(); NetworkStream tcpStream = null; stopWatch.Start(); try { if (tcpHandle.Connected) { byte[] tempReceiveByte = new byte[1]; tcpStream = tcpHandle.GetStream(); if (tcpStream.CanRead) { do { tcpStream.Read(tempReceiveByte, 0, tempReceiveByte.Length); receiveBytes.AddRange(tempReceiveByte); } while (tcpStream.DataAvailable); if (receiveBytes.Count > 0) { result.funcResult.isSuccess = true; } else { receiveBytes = null; result.funcResult.isSuccess = false; } } else { receiveBytes = null; result.funcResult.isSuccess = false; } } else { receiveBytes = null; result.funcResult.isSuccess = false; } } catch (Exception ex) { receiveBytes = null; result.funcResult.isSuccess = false; result.funcResult.funcException = ex; } finally { if (tcpStream != null) { tcpStream.Close(); } } stopWatch.Stop(); result.funcResult.totalMilliseconds = stopWatch.ElapsedMilliseconds; result.receiveData = receiveBytes; stopWatch.Reset(); return(result); }