flagflag  If you want to see English page, please click "English" Button at Left.
  • カテゴリ 雑記帳 の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - 雑記帳カテゴリのエントリ

Windows で Kinect の LEDを操作する (with OpenNI)

カテゴリ : 
雑記帳
執筆 : 
iseki 2012-1-23 21:46
Kinect の LED を操作するという記事
http://exout.net/blog/?p=303
があったのですが,試したところ Windows では動きませんでした.(Mac用かな?)

そこで,検索したところ
http://akatukisiden.wordpress.com/2011/1​2/10/openniでkinectのチルトモーター首を動かす/
という記事がありましたので,2つを合わせてプログラムを作成しました.

なお,プログラムは書き換えると間違える可能性がありますので,使用している物の抜粋を
ほぼそのまま載せます.まあプログラマなら分かりますよ...ね.
VC++ 2008, 2010 で動くのを確認しています. xn の頭の :: は気にしないでください.惰性で付けてます.



ヘッダファイル

// USB
#define OPENNI_VID_MICROSOFT 0x45e
#define OPENNI_PID_NUI_MOTOR 0x02b0

#define OPENNI_LED_OFF 0
#define OPENNI_LED_GREEN 1
#define OPENNI_LED_RED 2
#define OPENNI_LED_ORANGE 3
#define OPENNI_LED_BLINK_GREEN 4
#define OPENNI_LED_BLINK_RED 5
#define OPENNI_LED_BLINK_ORANGE 6

....

class COpenNiTool
{
public:
COpenNiTool(void) { init();}
....

....
// USB
BOOL openUSBDevice (void);
void closeUSBDevice(void);
void setLEDColor (int col);
void setTiltMotor(int ang);
....

// USB
XN_USB_DEV_HANDLE usb_dev;
XnUSBConnectionString* devPath;
....
}





cppファイル

void COpenNiTool::init()
{
....
//
usb_dev = NULL;
devPath = NULL;
....
}

....
....

/////////////////////////////////////////////////////////////////////////////////////////////////////
// USB

BOOL COpenNiTool::openUSBDevice(void)
{
rc = ::xnUSBInit();
if (rc!=XN_STATUS_OK && rc!=XN_STATUS_USB_ALREADY_INIT) return FALSE;

#ifdef WIN32
XnUInt32 count;
rc = ::xnUSBEnumerateDevices(OPENNI_VID_MICROSOFT, OPENNI_PID_NUI_MOTOR, (const XnUSBConnectionString**)&devPath, &count);
if (rc!=XN_STATUS_OK) {
::xnUSBShutdown();
return FALSE;
}

rc = ::xnUSBOpenDeviceByPath(*devPath, &usb_dev);
if (rc!=XN_STATUS_OK) {
::xnUSBFreeDevicesList(devPath);
return FALSE;
}

#else
rc = ::xnUSBOpenDevice(OPENNI_VID_MICROSOFT, OPENNI_PID_NUI_MOTOR, NULL, NULL, &usb_dev);
if (rc!=XN_STATUS_OK) {
::xnUSBShutdown();
return FALSE;
}
#endif

return TRUE;
}


void COpenNiTool::closeUSBDevice(void)
{
if (usb_dev!=NULL) {
::xnUSBCloseDevice(usb_dev);
usb_dev = NULL;
}

#ifdef WIN32
if (devPath!=NULL) {
::xnUSBFreeDevicesList(devPath);
devPath = NULL;
}
#endif

::xnUSBShutdown();
}


void COpenNiTool::setLEDColor(int col)
{
if (usb_dev==NULL) return;
::xnUSBSendControl(usb_dev, XN_USB_CONTROL_TYPE_VENDOR, 0x06, (XnUInt16)col, 0, NULL, 0, 0);
return;
}


void COpenNiTool::setTiltMotor(int ang)
{
if (usb_dev==NULL) return;
//if (ang>30 || ang<-30) return;
::xnUSBSendControl(usb_dev, XN_USB_CONTROL_TYPE_VENDOR, 0x31, (XnUInt16)(ang*2), 0, NULL, 0, 0);
return;
}

iphoneのIMAPでSSL

カテゴリ : 
雑記帳
執筆 : 
iseki 2009-2-18 22:02
iphone で使用するSoftBankのIMAPは暗号化されておらず,非常に危なっかしいので,無線LAN部分だけでもSSLで暗号化することにする.
具体的にはSSLを中継するプログラムを作って,大学のマシンで中継させる.
プログラムはsl_proxy関連で最近同じようなやつをたくさん作っているので,15分できた.証明書も取り合えず流用.

iphone <----SSL----> 大学の中継サーバ <----通常通信----> imap.softbank.jp

しかし,iphoneは親切と言うべきか,おおきなお世話と言うべきか,入力した設定を勝手に解釈して変更するので困ってしまう.
例えば,SoftBankのIMAPのアカウントを登録して,さらに同じようなアカウントを登録しようとすると,既にある設定まで変わって,同じアカウントが2個できる.何なのだー.
仕方ないので,全然関係の無いようなアカウントを登録してから内容を変更.

IMAPのSSL通信も相手のポートは993に決め打ちのようで,いくらSSL通信のスイッチをONにしておいても,993番ポート以外では暗号化通信を行わない.
いい加減にしろー.このせいで30分くらいで終わるところ,半日つぶしたじゃないか!!!

SoftBankもたいした手間じゃないんだからSSL通信にすればいいのに.何を考えているのでしょう.

おっと.こらこら,この辺のマシンの993番ポートを叩いて回ろう何んてのは止めてね.

一息

カテゴリ : 
雑記帳
執筆 : 
admin 2008-12-29 2:57
サイトのリニューアルもやっと一息 

サイト内 検索

ログイン

ユーザー名:

パスワード:


パスワード紛失
新規登録

カテゴリ一覧

サブ メニュー

ミニカレンダー

前月2024年 5月翌月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
<今日>

オンライン状況

29 人のユーザが現在オンラインです。 (1 人のユーザが ブログ を参照しています。)

登録ユーザ: 0
ゲスト: 29

もっと...

アクセスカウンタ

今日 : 520520520
昨日 : 3775377537753775
総計 : 2369680523696805236968052369680523696805236968052369680523696805
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com