コード例 #1
0
        void _textInputHelper_TextInputFinished(object sender, TextInputEventArgs e)
        {
            if (string.IsNullOrEmpty(e.Text))
            {
                _logger.Trace("No text entered, nothing to do");
                return;
            }

            _logger.Trace("Sending manually entered text");

            try
            {
                var textData = new TextData();
                textData.Text = e.Text;
                ApplicationContext.Current.ControllerClient.DataSource.AddData(textData);
            }
            catch (PhoneControllerException ex)
            {
                MessageBox.Show("An error occurred while sending the text: " + ex.Message);
            }
        }
コード例 #2
0
ファイル: DataSource.cs プロジェクト: porter1130/WP8-DEMO
        private void AddData(string text)
        {
            // we split the text into multiple data messages if necessary
            // since we're dealing with unicode (UTF8) data here, the _absolute_
            // worst case is that we have a (4 * character count) byte size.
            // so what we do is use the maximum payload for a data message divided by 4
            // to be on the safe side.
            var chunkSize = (int)Math.Floor(DataMessage.MaxPayloadLength / 4.0); // probably 62 at the moment
            var chunks = (int)Math.Ceiling(text.Length / (double)chunkSize);

            // report one message for each chunk
            for (int i = 0; i < chunks; i++)
            {
                var skip = i * chunkSize;
                var remainingSize = text.Length - skip;

                // create fragment
                string textFragment;
                if (remainingSize > chunkSize)
                {
                    textFragment = text.Substring(skip, chunkSize);
                }
                else
                {
                    textFragment = text.Substring(skip);
                }

                // create message and report
                var data = new TextData();
                data.Text = textFragment;
                RaiseDataAcquiredEvent(data);
            }
        }
コード例 #3
0
        /// <summary>
        /// Creates a data message from raw message data, starting at a given offset in the raw data.
        /// </summary>
        /// <param name="rawMessage">The raw message data.</param>
        /// <param name="start">The index the recreation of the data message should be started at.</param>
        /// <returns>A data message of correct type, recreated from the raw data.</returns>
        public static DataMessage CreateFromRawMessage(byte[] rawMessage, int start)
        {
            // result
            DataMessage result = null;

            // inspect type
            var dataType = (DataType)BitConverter.ToInt32(rawMessage, start + 1);

            // simple switch here
            switch (dataType)
            {
                case DataType.ControllerInfo:
                    result = new ControllerInfoData();
                    break;
                case DataType.Accelerometer:
                    result = new AccelerometerData();
                    break;
                case DataType.Compass:
                    result = new CompassData();
                    break;
                case DataType.Gyroscope:
                    result = new GyroscopeData();
                    break;
                case DataType.Motion:
                    result = new MotionData();
                    break;
                case DataType.Touch:
                    result = new TouchData();
                    break;
                case DataType.Tap:
                    result = new TapData();
                    break;
                case DataType.DoubleTap:
                    result = new DoubleTapData();
                    break;
                case DataType.Hold:
                    result = new HoldData();
                    break;
                case DataType.Flick:
                    result = new FlickData();
                    break;
                case DataType.FreeDrag:
                    result = new FreeDragData();
                    break;
                case DataType.HorizontalDrag:
                    result = new HorizontalDragData();
                    break;
                case DataType.VerticalDrag:
                    result = new VerticalDragData();
                    break;
                case DataType.DragComplete:
                    result = new DragCompleteData();
                    break;
                case DataType.CustomDrag:
                    result = new CustomDragData();
                    break;
                case DataType.CustomDragComplete:
                    result = new CustomDragCompleteData();
                    break;
                case DataType.Pinch:
                    result = new PinchData();
                    break;
                case DataType.PinchComplete:
                    result = new PinchCompleteData();
                    break;
                case DataType.Text:
                    result = new TextData();
                    break;
            }

            // fill from raw data
            if (result != null)
            {
                result.FromByteArray(rawMessage, start);
            }
            else
            {
                if (Debugger.IsAttached)
                {
                    Debugger.Break();
                }
            }

            return result;
        }
コード例 #4
0
ファイル: InputEmulator.cs プロジェクト: porter1130/WP8-DEMO
 private void Process(TextData data)
 {
     // this simply passes on the transmitted text data as keyboard input to the operating system
     Win32Wrapper.SendKeyboardInput(data.Text);
 }