示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }