Example #1
0
        /// <summary>
        /// Called in form of event by the Master form when user desires to send data to slave.
        /// </summary>
        /// <param name="slaveAddress">Destination address for the data to be delivered to. If equal to 0 - sent to everyone.</param>
        /// <param name="functionCode">Determines whether user wants to send data to slave or retrieve data from slave. Note that retrieval of data in broadcast is a big no-no.</param>
        /// <param name="dataToSend">Data to send to slave.</param>
        public void HandleSendToSlaveEvent(int slaveAddress, FunctionCode functionCode, string dataToSend)
        {
            if (functionCode == FunctionCode.RetrieveTextFromSlave && slaveAddress == 0)
            {
                MessageBox.Show(
                    "Cannot retrieve data from any slave in broadcast mode. Imagine that avalanche of zeros and ones trying to get through...",
                    "Wrong operation", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            var messageFrame = new MessageFrame
            {
                TargetSlaveAddress = slaveAddress,
                FunctionCode       = functionCode,
                Data = dataToSend
            };

            switch (functionCode)
            {
            case FunctionCode.SendTextFromMaster:
                SendRequestToSlave(messageFrame);
                break;

            case FunctionCode.RetrieveTextFromSlave:
                MessageFrame responseFrame = _masterService.SendRequest(messageFrame);
                masterForm.ShowSlaveData(responseFrame.Data);
                break;
            }
        }