コード例 #1
0
        /// <summary>
        /// 일정 기간동안 dioport를 연다..(비동기 실행)
        /// </summary>
        /// <param name="shtDioPort"></param>
        /// <param name="intDuration"></param>
        public void DIOSetOnDuration_Async(short shtDioPort, int intDuration)
        {
            param_DIOSetOnDuration p = new param_DIOSetOnDuration();

            p.intDuration = intDuration;
            p.shtDioPort  = shtDioPort;

            ThreadPool.QueueUserWorkItem(new WaitCallback(DIOSetOnDuration), p);
        }
コード例 #2
0
        /// <summary>
        /// 일정 기간동안 dioport를 연다..
        /// </summary>
        /// <param name="obj">param_DIOSetOnDuration 구조체</param>
        public void DIOSetOnDuration(object obj)
        {
            lock (this)
            {
                try
                {
                    param_DIOSetOnDuration p = (param_DIOSetOnDuration)obj;

                    bool isAck = false;

                    //on신호는 3번 보낸다. 실패시 메소드 종료.
                    for (int i = 1; i < 3; i++)
                    {
                        isAck = DIOSetOn(p.shtDioPort);
                        if (isAck)
                        {
                            break;
                        }
                    }

                    Thread.Sleep(p.intDuration);

                    //off신호는 on 성공시만..
                    if (isAck)
                    {
                        //off신호는 성공시 까지...
                        while (true)
                        {
                            //작업시만..
                            if (!bReadSocket)
                            {
                                break;
                            }

                            if (socket.Connected && DIOSetOff(p.shtDioPort))
                            {
                                break;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    clsLog.WLog_Exception("DIOSetOnDuration", ex);
                }
            }
        }