4

C#教える順番のメモ

研究室の工房(勉強会)向けメモ。

どうもFlashとかArduinoとか、インタフェースのプロトタイピングをちゃっちゃっと作れるのに特化した環境ばっかり整えてる気がするので、C#とかJavaとかC++みたいなOSに近いレベルの開発も研究室内に広めた方がいい気がする。

PSoCやMoxaやProcessingとかが、FlashやArduinoの勉強の次はこれだぜってのもわかるけど、インタフェース技術ばっかり増えてそいつらを連動させられないと意味がないのでVisual C# 2005 Express Edition使って、「糊」のように色んなデバイスとデータ形式とサービスをFlashやArduinoにくっつけたり、「司令塔」のようにそれらの実行手順や連動の条件を記述する方法を後生に残したい。

・C#(糊と司令塔として使いこなせるようにする)

ひとつひとつ重要な機能を解説すると同時に、そこそこ面白いアプリが動いて楽しいねとなるようにする。

とにかく何にでも接続できるようにする。

1.SerialPortクラスを使ってArduinoと連動させよう

  Formへのアイテムの追加、VisualStudioでのEvent登録

2.マウスとキーボードを乗っ取ろう(SendKeysとMouseクラスの使い方)

  たいていのアプリを自動操縦できるようになる。GoogleMapとか

3.AxShockwaveFlashクラスを使ってFlashと連動させよう

  ActiveX Objectの登録と呼び出し方、System.Collections.*の扱い方

4.GPSを使おう

  このblogにある GpsConnector.cs をダウンロードしてきて自分のプロジェクトに取り込む

5.GoogleEarth COM APIで地球を回してみよう

  COMの登録と呼び出し方、GPSと連動

6.Flickr.NETとWebClientでFlickrAPIを使ってみよう

  COMの登録と呼び出し方、HTTPでのアクセス、できればWSDLとかの話も

7.FileSystemWatcher、Timer、BackgroundWorker、ThreadとDelegateの使い方

  マルチスレッドのイベント処理をさばく方法について

8.キーボードイベントを受け取ろう

  hotkey, 低レベルキーボードフックでhack

9.ManagedDirectXでジョイスティックを使う

  ジョイスティックは分解すると楽しい

10.Win32APIを.NET環境から呼び出してみよう(DllInport、WndProc、WindowMessage、MarshalAs)

  スキャナの制御、SkypeのコントロールなどWindowsの事なら何でもできる

その他:

Phidget.NET(RFIDリーダーなど)、テキサスのRFIDリーダ、WindowsMediaPlayerを使う

目標は、合宿でよく4,5人のチームに分かれて新しい技術を開拓してまとめて発表するというのをやるんだけど、そこで文書でまとめるだけじゃなくてラッパークラスを書いて提供するぐらいにみんながなる程度。

0

SkypeA2Aラッパー メモ

Org.Shokai.Skype.SkypeAPIControlFormが結構というか前に公開した奴でだいたい良いかなと思ったので、

Org.Shokai.Skype.A2A.Applicationの実装。

これ使うとそこそこ簡単に、SkypeA2AというSkype上のP2PフレームワークがC#で使えるよ、というラッパーです。

クラスが結構できてきたけど説明がめんどいので、とりあえずzipでおいとく

Source Code & exe (Visual Studio2005 C#.NET)

Form1.csを見ればわかると思うが一応自分のためにもメモ。

まずSkypeAPIとのやりとりするFormを作ろう。Show()しなければ非表示にできる。

usingOrg.Shokai.Skype;

SkypeAPIControlFormskypeControl;

skypeControl=newSkypeAPIControlForm();

skypeControl.Show();

A2A上で認識されるアプリケーションを作る。コンストラクタでさっきのSkypeAPIControlFormのインスタンスを渡してやる必要がある。多分ユニークな名前にしなければならないので注意。

Org.Shokai.Skype.A2A.Applicationa2a;

a2a=newOrg.Shokai.Skype.A2A.Application(skypeControl,”AppName”);

ここまでは、ネットワークに参加する全員が行わなければならない儀式。

相手のSkypeユーザ名を指定して接続。これはどちらからでも良い。

a2a.Connect(“shohashimoto”);

データの送信。StringでTCPみたいなのが送れる。

a2a.Send(“hello!!!”);

データの受信。関数を宣言しておいて、コールバックに追加してあげてください。

publicvoidonRecvData(Stringmessage){

Console.WriteLine(message);

}

a2a.onReceive+=onRecvData;

とりあえずチャットみたいな用途には使えるけど、まだまだ作りかけ。とりあえず1アプリケーション1Stream1ユーザに限定して使いやすいように実装してみた。

複数コネクションを張るにはOrg.Shokai.Skype.A2A.Applicationインスタンスを複数使えばまあなんとか動くかな?動かないかも知れない。

そのうちやる。

0

ACバッジ

もらった

0

PileusがMSN毎日インタラクティブに掲載されました

初めて新聞のインタビューを受けました。電話で結構長く喋りました。

「インターネット傘」 雨の日の散歩も楽しくなる?−みんなのニュース:MSN毎日インタラクティブ

やたらよくまとまってるので、今までPileusがなんだかわからないなぁ(英語とか)という人もわかると思います。

0

C# – SkypeAPIとの対話コンソール作った

SkypeAPIのコマンドをそのまま使える対話式コンソールを作った。

Skype4COMやSkypeXを使ってもWindowsアプリからSkypeを操作する事が出来るけど、なんかSkype4COMだとメッセージの返り値を受け取れなかった(俺のせい?)ので、自分で作った。

といってもほとんど完成してるコードを継承してGUIかぶせただけだけど。

Source Code & exe (Visual Studio 2005 C#2.0)

SkypeAPIControlPanel\bin\Release の中の「SkypeAPIControlPanel.exe」から起動できる。

なお、中に入っているSkypeBridge.csはSkype API Book Vol.1の17章に掲載されていたもので、ここからダウンロードもできる。

このアプリはSkypeBridge.csを継承してインタフェース部分を実装したもの。

起動すると実行の許可を求められるので、「許可」して「OK」する

SkypeAPI Dialogue

Read more