Ejemplo n.º 1
0
        public PLCModBusRtuDriver(PLCDescriptor descriptor)
        {
            sendCommandDateTime = DateTime.Now;

            this.descriptor = descriptor;
            parseLock       = new object();
            sendLock        = new object();

            receBytesCache = new List <byte>();

            fastQueue = new Queue <RtuRegistPackage>();
            sendQueue = new Queue <RtuRegistPackage>();

            parseTd = new Thread(new ThreadStart(ParseModBusPackage));
            parseTd.IsBackground = true;
            parseTd.Start();

            sendTd = new Thread(new ThreadStart(SendModBusPackage));
            sendTd.IsBackground = true;
            sendTd.Start();

            tcpPort = new TcpClientPort(descriptor.IpAddress, descriptor.Port, descriptor.AutoReConnInterval);
            tcpPort.OnConnNotify        += TcpPort_OnConnNotify;
            tcpPort.OnExceptionHappened += TcpPort_OnExceptionHappened;
            tcpPort.OnPortDataReceived  += TcpPort_OnPortDataReceived;

            heartTimer          = new System.Timers.Timer();
            heartTimer.Interval = descriptor.SendInterval * 1000;
            heartTimer.Elapsed += SendTimer_Elapsed;
            heartTimer.Enabled  = true;
        }
Ejemplo n.º 2
0
 public void Stop()
 {
     heartTimer.Enabled = false;
     isExit             = true;
     if (sendTd.IsAlive)
     {
         sendTd.Abort();
     }
     if (tcpPort != null)
     {
         tcpPort.Stop();
     }
     tcpPort = null;
 }