Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="byteCommand"></param>
        /// <param name="latencyTime"></param>
        public void Send(byte[] byteCommand, int latencyTime)
        {
            // 2006.11.03 Added byteCommand null check
            //
            if (byteCommand == null)
            {
                throw new ArgumentNullException("byteCommand");
            }

            // 2006.09.15 Added
            // 最小等待时间 15 毫秒
            //Debug.Assert (latencyTime >= 15, "latencyTime must >= 15 ");
            if (latencyTime < MIN_LATENCY_TIME)
            {
                throw new ArgumentOutOfRangeException("latencyTime", latencyTime, SR.GetString("LE_LatencyTime_Min"));
            }

            if (m_State != CommPortProxyState.None)
            {
                throw new Exception(SR.GetString("LE_SendData"));
            }

            if ((StateConstants)_winsock.State == StateConstants.sckConnected)
            {
                m_State = CommPortProxyState.Receiving;

                // 发送前清空接收、发送缓冲区
                if (_winsock.BytesReceived > 0)
                {
                    object data = new byte[_winsock.BytesReceived];
                    _winsock.GetData(ref data, _type, _winsock.BytesReceived);
                }

                _winsock.SendData(byteCommand);

                m_Timer.Interval = latencyTime;
                m_Timer.Start();

                // for debug
                //
                WSListen._log.AddLog(this.RemoteHostIP + " Timer start");
            }
        }