private void SerialDataReceived(Object sender, SerialDataReceivedEventArgs e) { byte buf1 = serialComm.ReadByte(); byte buf2 = serialComm.ReadByte(); /*List<bool> status = CompareKeyStates(buf1, buf2); * int count = 0; * foreach (bool b in status) * { * if (b) * SendKey(charMap[count]); * count++; * } * keyBuffers[0] = buf1; * keyBuffers[1] = buf2;*/ List <KeyState> status = KeyStates(buf1, buf2); int count = 0; foreach (KeyState b in status) { switch (b) { case KeyState.KeyPress: PressKey(charMap[count]); break; case KeyState.KeyRelease: ReleaseKey(charMap[count]); break; } count++; } keyBuffers[0] = buf1; keyBuffers[1] = buf2; try { this.Invoke(new MethodInvoker(delegate() { Char[] buf1Chars = Convert.ToString(buf1, 2).PadLeft(8, '0').ToCharArray(); Char[] buf2Chars = Convert.ToString(buf2, 2).PadLeft(8, '0').ToCharArray(); Array.Reverse(buf1Chars); Array.Reverse(buf2Chars); textBox1.Text = new String(buf1Chars); textBox1.Text += new String(buf2Chars); })); } catch (Exception) { } }