CSHARP 16
Ardujoy.cs By jimmyd on 30th January 2022 01:54:37 PM
  1. using System;
  2. using System.IO.Ports;
  3. using System.Runtime.InteropServices;
  4.  
  5. namespace 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. }

PasteIT is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

Login or Register to edit or fork this paste. It's free.