- 1using System;
- 2using System.IO.Ports;
- 3using System.Runtime.InteropServices;
- 4
- 5namespace ardujoy
- 6{
- 7 class Program
- 8 {
- 9 [DllImport("user32.dll")]
- 10 private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
- 11
- 12 const uint KEYEVENTF_KEYUP = 0x0002;
- 13
- 14 public static void Main(string[] args)
- 15 {
- 16 string line;
- 17 string JOY_BUTTON="1";
- 18 string JOY_UP="1";
- 19 string JOY_DOWN="1";
- 20 string JOY_LEFT="1";
- 21 string JOY_RIGHT="1";
- 22
- 23 string PREV_BUTTON="1";
- 24 string PREV_UP="1";
- 25 string PREV_DOWN="1";
- 26 string PREV_LEFT="1";
- 27 string PREV_RIGHT="1";
- 28
- 29 char KEY_BUTTON='Q';
- 30 char KEY_UP='W';
- 31 char KEY_DOWN='S';
- 32 char KEY_LEFT='A';
- 33 char KEY_RIGHT='D';
- 34
- 35 if (args.Length == 1) {
- 36 var port = new SerialPort(args[0],115200, Parity.None, 8, StopBits.One);
- 37
- 38 port.Open();
- 39 port.DiscardOutBuffer();
- 40 port.DiscardInBuffer();
- 41 while (port.IsOpen) {
- 42 line = port.ReadLine();
- 43// Console.WriteLine(line);
- 44 if (line.Length == 5) {
- 45 JOY_BUTTON=line.Substring(0,1);
- 46 JOY_UP=line.Substring(4,1);
- 47 JOY_DOWN=line.Substring(3,1);
- 48 JOY_LEFT=line.Substring(2,1);
- 49 JOY_RIGHT=line.Substring(1,1);
- 50
- 51 if (JOY_BUTTON != PREV_BUTTON) {
- 52 PREV_BUTTON=JOY_BUTTON;
- 53 if (JOY_BUTTON == "0") {
- 54 keybd_event(Convert.ToByte(KEY_BUTTON), 0, 0, 0);
- 55 } else {
- 56 keybd_event(Convert.ToByte(KEY_BUTTON), 0, KEYEVENTF_KEYUP, 0);
- 57 }
- 58 }
- 59 if (JOY_UP != PREV_UP) {
- 60 PREV_UP=JOY_UP;
- 61 if (JOY_UP == "0") {
- 62 keybd_event(Convert.ToByte(KEY_UP), 0, 0, 0);
- 63 } else {
- 64 keybd_event(Convert.ToByte(KEY_UP), 0, KEYEVENTF_KEYUP, 0);
- 65 }
- 66 }
- 67 if (JOY_DOWN != PREV_DOWN) {
- 68 PREV_DOWN=JOY_DOWN;
- 69 if (JOY_DOWN == "0") {
- 70 keybd_event(Convert.ToByte(KEY_DOWN), 0, 0, 0);
- 71 } else {
- 72 keybd_event(Convert.ToByte(KEY_DOWN), 0, KEYEVENTF_KEYUP, 0);
- 73 }
- 74 }
- 75 if (JOY_LEFT != PREV_LEFT) {
- 76 PREV_LEFT=JOY_LEFT;
- 77 if (JOY_LEFT == "0") {
- 78 keybd_event(Convert.ToByte(KEY_LEFT), 0, 0, 0);
- 79 } else {
- 80 keybd_event(Convert.ToByte(KEY_LEFT), 0, KEYEVENTF_KEYUP, 0);
- 81 }
- 82 }
- 83 if (JOY_RIGHT != PREV_RIGHT) {
- 84 PREV_RIGHT=JOY_RIGHT;
- 85 if (JOY_RIGHT == "0") {
- 86 keybd_event(Convert.ToByte(KEY_RIGHT), 0, 0, 0);
- 87 } else {
- 88 keybd_event(Convert.ToByte(KEY_RIGHT), 0, KEYEVENTF_KEYUP, 0);
- 89 }
- 90 }
- 91 }
- 92 }
- 93 } else Console.WriteLine("You must provide the name of the serial port to use.");
- 94 }
- 95 }
- 96}
Raw Paste