public void Send(uint id, VividTouchMessageType messageType, byte[] bytes)
        {
            var message = new byte[bytes.Length + 5];

            message[0] = 0x07;
            message[1] = (byte)id;
            message[2] = (byte)messageType;
            Array.Copy(bytes, 0, message, 3, bytes.Length);
            message[bytes.Length + 3] = 0x08;
            message[bytes.Length + 4] = 0x0d;

#if DEBUG
            CrestronConsole.PrintLine("VT Board Tx: ");
            Tools.PrintBytes(message, message.Length, true);
#endif
            _txQueue.Enqueue(message);

            if (_txThread == null || _txThread.ThreadState != Thread.eThreadStates.ThreadRunning)
            {
                _txThread = new Thread(specific =>
                {
                    while (!_txQueue.IsEmpty)
                    {
                        var m = _txQueue.Dequeue();
                        _comPort.Send(m, m.Length);
                        Thread.Sleep(200);
                    }
                    return(null);
                }, null)
                {
                    Name     = string.Format("{0} Tx Handler", GetType().Name),
                    Priority = Thread.eThreadPriority.MediumPriority
                };
            }
        }
Esempio n. 2
0
 public void Send(VividTouchMessageType messageType, byte[] bytes)
 {
     _comPortHandler.Send(0x01, messageType, bytes);
 }