###前提・実現したいこと
当方プログラミングは全くの初心者なため、用語等の間違いは指摘していただけると幸いです。
Visual studioでジャイロセンサを使ってキーボードのwasd入力をしたいと考えています。プログラミングは全くの初心者でなにをどうしたらいいかよくわかっていません。取り合えず、手探りでジャイロセンサの出力だけ-1 or 1でコンソールに表示することはできました。次にキーボード入力の方に取り掛かっているのですが、”sendkeys”が使えず困っています。
###発生している問題・エラーメッセージ
82行目が 「'program.send(string)'はabstract、exterm、またはpartialに指定されていないため、本体を宣言する必要があります。」 91、94、97、100、103行目が 「現在のコンテキストに’sendkeys’という名前は存在しません。」
###該当のソースコード
C#
1using System; 2 3using Zmp.Imuz.Communication; 4 5namespace Zmp.Imuz.Sample.SimpleCommunicationSample 6{ 7 // BluetoothかCAN(USB)接続されたIMU-Zの計測データを 8 // コンソールに表示する最もシンプルなプログラムです。 9 class Program 10 { 11 12 static void Main(string[] args) 13 { 14 // お使いの環境に合わせてCOMポートを変更してください。 15 const string ImuzCommPortName = "COM4"; 16 const PortType portType = PortType.Bluetooth; 17 //const PortType portType = PortType.Can; 18 19 20 // ポートを指定して ポートオブジェクトを生成します。 21 // 22 // CreateCommunicationPortでは、実際にシステムにポートが存在するか、また、 23 // 開けるかどうかにかかわらず、ポートオブジェクトを生成します。 24 ICommunicationPort port = CommunicationManager.CreateCommunicationPort(ImuzCommPortName, portType); 25 26 // ポートを開きます。 27 if (port.Open()) 28 { 29 // 成功したら、計測データ受信イベントのハンドラを登録します。 30 port.MsgMeasurementReceived += onMsgMeasurement; 31 32 } else { 33 // 失敗したらメッセージを出力します。 34 // 失敗の原因は様々ですが、指定したCOMが存在するか確認してください。 35 Console.WriteLine("Can not open the port. {0}", ImuzCommPortName); 36 } 37 38 // キーボードから'q'(Enter)を入力するとアプリケーションを終了します。 39 string str; 40 do 41 { 42 str = Console.In.ReadLine(); 43 } while (!(str.Length > 0 && str[0] == 'q')); 44 45 // 通信を切断して、ポートを閉じます。 46 port.Close(); 47 } 48 49 // 計測データ受信イベントのハンドラです。 50 // IMU-Zからデータを受信するごとに呼ばれます。 51 // 52 // MeasurementDataの中にすべてのデータが入っているので、 53 // アプリケーションから自由に使えます。 54 55 // Openには成功するが、データ受信のメッセージが表示されない場合、 56 // 指定したCOMポートが、IMU-Zに接続されている正しいBluetoothポートかどうか 57 // 確認してください。 58 static void onMsgMeasurement(object sender, MeasurementData mess) 59 { 60 // ノード番号、タイムスタンプそして、加速度、ジャイロ、地磁気が3軸ずつ 61 // それぞれX,Y,Z軸の並びで入っています。 62 int x; 63 int y; 64 int z; 65 if (mess.gyro[0] < 0) 66 { x = -1; } 67 else 68 { x = 1; } 69 if (mess.gyro[1] < 0) 70 { y = -1; } 71 else 72 { y = 1; } 73 if (mess.gyro[2] < 0) 74 { z = -1; } 75 else 76 { z = 1; } 77 Console.WriteLine(" ({0},{1},{2})", 78 x, y, z); 79 80 81 } 82 public static void send(string keys); 83 private void receivedDataProcessing(String recieveData) 84 { 85 recieveData = recieveData.Replace("\r", ""); 86 recieveData = recieveData.Replace("\n", ""); 87 88 switch (recieveData) 89 { 90 case "W": 91 SendKeys.Send("w"); 92 break; 93 case "A": 94 SendKeys.Send("a"); 95 break; 96 case "S": 97 SendKeys.Send("s"); 98 break; 99 case "D": 100 SendKeys.Send("d"); 101 break; 102 case "Space": 103 SendKeys.Send(" "); 104 break; 105 } 106 } 107 } 108}
###試したこと
sendkeysの宣言をしたのですがやはり反応しませんでした。宣言の仕方が間違っているのでしょうが、どう書いたらいいのか分からないため何も手につかない状態です。後に少し手直ししたものを書きました。リンクを張っておきます。
https://github.com/damball/Imuz/blob/master/Imuz_sample2.txt
###補足情報(言語/FW/ツール等のバージョンなど)
言語:C#
環境?:Blend for Visual Studio 2015
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/03 12:32
2017/01/03 12:40
2017/01/03 12:58
2017/01/03 13:32