前の10件 | -
Adafruit FT232H を使って python スクリプトで MCP27017 を使う
1. ここに書いた要領で anaconda に 32bit python2.7 を入れる
2. 販売元の解説通りドライバと Adafruit Python GPIO Library をインストール
3. ここにある接続で MCP23013 にLED、抵抗、電源等を接続
4. 販売元のi2cの解説を参考にしつつ、以下のように MCP23017 とつなぐ
- FT232H の D1 と D2 を接続し、 MCP23017 の SDA に接続
- さらに SDA に 4.7k ohm をつけて 5V につなぐ
- D0 を MCP23017 の SCL に接続
- 同じように D0 に 4.7k ohm をつけて 5V につなぐ
5. 次の python スクリプトで LED をつけてみる
2. 販売元の解説通りドライバと Adafruit Python GPIO Library をインストール
3. ここにある接続で MCP23013 にLED、抵抗、電源等を接続
4. 販売元のi2cの解説を参考にしつつ、以下のように MCP23017 とつなぐ
- FT232H の D1 と D2 を接続し、 MCP23017 の SDA に接続
- さらに SDA に 4.7k ohm をつけて 5V につなぐ
- D0 を MCP23017 の SCL に接続
- 同じように D0 に 4.7k ohm をつけて 5V につなぐ
5. 次の python スクリプトで LED をつけてみる
Adafruit FT232H を anaconda で使う準備
Adafruit FT232H を見てやってみても import ftdi1 でエラーが出てしまった。
32bit 版の python 2.7 が必要だった(普通にインストールすると 64bit 版の python3.0 になっている)。
以下のコマンドで 32bit 版の 2.7 環境を作成
ついでに 64bit 版の 2.7 も作っておく
次回からは anaconda プロンプトを起動してから
で 32 bit の python 2.7 に切り替えられる
戻す時は
32bit 版の python 2.7 が必要だった(普通にインストールすると 64bit 版の python3.0 になっている)。
以下のコマンドで 32bit 版の 2.7 環境を作成
ついでに 64bit 版の 2.7 も作っておく
次回からは anaconda プロンプトを起動してから
で 32 bit の python 2.7 に切り替えられる
戻す時は
mac でシリアル接続
Windows では teraterm でシリアル接続をしていますが、
Mac ではどうするのか。調べると screen というターミナルの
アプリでやるみたい。
1. FTDI なんちゃらをUSBで接続
2. ls /dev/tty.usb* でデバイス列挙
私の場合は /dev/tty.usbserial-AL01O27E が見つかった
3. コマンドプロンプトで screen を起動
screen /dev/tty.usbserial-AL01O27E 115200
ここを参考にしました。
Mac ではどうするのか。調べると screen というターミナルの
アプリでやるみたい。
1. FTDI なんちゃらをUSBで接続
2. ls /dev/tty.usb* でデバイス列挙
私の場合は /dev/tty.usbserial-AL01O27E が見つかった
3. コマンドプロンプトで screen を起動
screen /dev/tty.usbserial-AL01O27E 115200
ここを参考にしました。
GR-KURUMIによる一緒に歌うチューニングメーター
FFTの練習 [C++]
FFT についてわかりやすいサイトA DFT and FFT TUTORIAL
FFT のバタフライダイアグラムのコードをみても、いまいち何をやって
いるのかわからない。なので、自分で書いてみました。
自分のコードとほかの人のコードはだいたい同じになったので、ここまで
やってやっと人のが読めそうな気がしてきました。手を動かすのは大事。
前述のサイトのバタフライダイアグラム をみながらコードにしてみました。
演算の中身はないです。画面に "回転因子はこれ" で "xとyをバタフライ"
というメッセージを出すだけ。
N=8 でのバタフライ演算(中身なし)のコード
output
FFT のバタフライダイアグラムのコードをみても、いまいち何をやって
いるのかわからない。なので、自分で書いてみました。
自分のコードとほかの人のコードはだいたい同じになったので、ここまで
やってやっと人のが読めそうな気がしてきました。手を動かすのは大事。
前述のサイトのバタフライダイアグラム をみながらコードにしてみました。
演算の中身はないです。画面に "回転因子はこれ" で "xとyをバタフライ"
というメッセージを出すだけ。
N=8 でのバタフライ演算(中身なし)のコード
output
0 twiddle(0, 2) butterfly(0, 1) 2 twiddle(0, 2) butterfly(2, 3) 4 twiddle(0, 2) butterfly(4, 5) 6 twiddle(0, 2) butterfly(6, 7) 0 twiddle(0, 4) butterfly(0, 2) twiddle(1, 4) butterfly(1, 3) 4 twiddle(0, 4) butterfly(4, 6) twiddle(1, 4) butterfly(5, 7) 0 twiddle(0, 8) butterfly(0, 4) twiddle(1, 8) butterfly(1, 5) twiddle(2, 8) butterfly(2, 6) twiddle(3, 8) butterfly(3, 7)
VisualStudio2015 で glew-1.13.0 をビルド [C++]
1. glew のサイトからソースコード( glew-1.13.0.zip )をダウンロード
2. build\vc12\glew.sln を VisualStudio Community 2015 で開く
3. VC12 のソリューションなので変換
4. "VC++ コンパイラとライブラリをアップグレードします"ダイアログでOK
5. ビルド->バッチビルドを開いてすべてチェック
6. ビルド
であっさり完了。
bin, include, lib を置きたい場所にコピーすればOK
2. build\vc12\glew.sln を VisualStudio Community 2015 で開く
3. VC12 のソリューションなので変換
4. "VC++ コンパイラとライブラリをアップグレードします"ダイアログでOK
5. ビルド->バッチビルドを開いてすべてチェック
6. ビルド
であっさり完了。
bin, include, lib を置きたい場所にコピーすればOK
Hello wxWidgets
wxWidgets を VS2015 でビルドしましたが、ビルドできたか確認
するため、かつ1からお勉強するために、サンプルをビルドしました。
大量に Sample があって素晴らしいですが、 minimal という最小コード
っぽいのが入っていたのでこれを使いました。
1. VS2015 で minimal_vc9.vcxproj を開く
2. ビルド
3. 実行
4. ウインドウが出た!
デフォルトでは構成が "Debug" になっていて、ビルドの設定は以下のように
なっていました。
Debug 構成
インクルードディレクトリ
.\..\..\lib\vc_lib\mswud;.\..\..\include;.;.\..\..\samples;%(AdditionalIncludeDirectories)
プリプロセッサ
コード生成
マルチスレッドデバッグ DLL(/MDd)
ライブラリディレクトリ
.\..\..\lib\vc_lib;%(AdditionalLibraryDirectories)
追加の依存ファイル
Release 構成
インクルードディレクトリ
.\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples;%(AdditionalIncludeDirectories)
プリプロセッサ
コード生成
マルチスレッド DLL(/MD)
ライブラリディレクトリ
Debug 構成と同じ
追加の依存ファイル
DLL Debug 構成
インクルードディレクトリ
.\..\..\lib\vc_dll\mswud;.\..\..\include;.;.\..\..\samples;%(AdditionalIncludeDirectories)
プリプロセッサ
コード生成
マルチスレッドデバッグ DLL (/MDd)
ライブラリディレクトリ
.\..\..\lib\vc_dll;%(AdditionalLibraryDirectories)
追加の依存ファイル
DLL Release 構成
インクルードディレクトリ
.\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples;%(AdditionalIncludeDirectories)
プリプロセッサ
コード生成
マルチスレッドDLL(/MD)
ライブラリディレクトリ
.\..\..\lib\vc_dll;%(AdditionalLibraryDirectories)
追加の依存ファイル
その他
DLL Debug でビルドした場合は、実行前に samples\minimal\vc_mswuddll に 上記 lib\vc_dll
ディレクトリから wxbase310ud_vc_custom.dll と wxmsw310ud_core_vc_custom.dl
を探してきてコピーする必要がありました。
インクルードディレクトリの samples は外してもビルド通りました。
ほかのサンプルでは使っているかもしれませんが、 miniumal では不要です。
追加の依存ファイルが大量なのと、プリプロセッサの設定が必要なのは
ハマりどころかもしれません。普通はインクルードとライブラリくらいしか設定しないので。
まとめ
自分でプロジェクトを作るときは次のように設定すればよい。
dll を使うとき
インクルード
- lib\vc_dll\mswud
- include
プリプロセッサ
__WXMSW__;_UNICODE;WXUSINGDLL
ライブラリパス
- lib\vc_dll
追加の依存ファイル
- デバッグ
- リリース
static link するとき
インクルード
- lib\vc_lib\mswud
- include
プリプロセッサ
__WXMSW__;_UNICODE;
ライブラリパス
- lib\vc_lib
追加の依存ファイル
- 前述 dll を使うときと同じ
するため、かつ1からお勉強するために、サンプルをビルドしました。
大量に Sample があって素晴らしいですが、 minimal という最小コード
っぽいのが入っていたのでこれを使いました。
1. VS2015 で minimal_vc9.vcxproj を開く
2. ビルド
3. 実行
4. ウインドウが出た!
デフォルトでは構成が "Debug" になっていて、ビルドの設定は以下のように
なっていました。
Debug 構成
インクルードディレクトリ
.\..\..\lib\vc_lib\mswud;.\..\..\include;.;.\..\..\samples;%(AdditionalIncludeDirectories)
プリプロセッサ
WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1; _SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH; %(PreprocessorDefinitions)
コード生成
マルチスレッドデバッグ DLL(/MDd)
ライブラリディレクトリ
.\..\..\lib\vc_lib;%(AdditionalLibraryDirectories)
追加の依存ファイル
wxmsw31ud_core.lib;wxbase31ud.lib;wxtiffd.lib;wxjpegd.lib;wxpngd.lib; wxzlibd.lib;wxregexud.lib;wxexpatd.lib;kernel32.lib;user32.lib; gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;shlwapi.lib; comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib; version.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)
Release 構成
インクルードディレクトリ
.\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples;%(AdditionalIncludeDirectories)
プリプロセッサ
WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1; _SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH; %(PreprocessorDefinitions)
コード生成
マルチスレッド DLL(/MD)
ライブラリディレクトリ
Debug 構成と同じ
追加の依存ファイル
wxmsw31u_core.lib;wxbase31u.lib;wxtiff.lib;wxjpeg.lib;wxpng.lib; wxzlib.lib;wxregexu.lib;wxexpat.lib;kernel32.lib;user32.lib; gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;shlwapi.lib; comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib; version.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)
DLL Debug 構成
インクルードディレクトリ
.\..\..\lib\vc_dll\mswud;.\..\..\include;.;.\..\..\samples;%(AdditionalIncludeDirectories)
プリプロセッサ
WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1; _SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH; %(PreprocessorDefinitions)
コード生成
マルチスレッドデバッグ DLL (/MDd)
ライブラリディレクトリ
.\..\..\lib\vc_dll;%(AdditionalLibraryDirectories)
追加の依存ファイル
wxmsw31ud_core.lib;wxbase31ud.lib;wxtiffd.lib;wxjpegd.lib;wxpngd.lib; wxzlibd.lib;wxregexud.lib;wxexpatd.lib;kernel32.lib;user32.lib; gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;shlwapi.lib; comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib; version.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)
DLL Release 構成
インクルードディレクトリ
.\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples;%(AdditionalIncludeDirectories)
プリプロセッサ
WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1; _SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH; %(PreprocessorDefinitions)
コード生成
マルチスレッドDLL(/MD)
ライブラリディレクトリ
.\..\..\lib\vc_dll;%(AdditionalLibraryDirectories)
追加の依存ファイル
wxmsw31u_core.lib;wxbase31u.lib;wxtiff.lib;wxjpeg.lib;wxpng.lib; wxzlib.lib;wxregexu.lib;wxexpat.lib;kernel32.lib;user32.lib; gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;shlwapi.lib; comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib; version.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)
その他
DLL Debug でビルドした場合は、実行前に samples\minimal\vc_mswuddll に 上記 lib\vc_dll
ディレクトリから wxbase310ud_vc_custom.dll と wxmsw310ud_core_vc_custom.dl
を探してきてコピーする必要がありました。
インクルードディレクトリの samples は外してもビルド通りました。
ほかのサンプルでは使っているかもしれませんが、 miniumal では不要です。
追加の依存ファイルが大量なのと、プリプロセッサの設定が必要なのは
ハマりどころかもしれません。普通はインクルードとライブラリくらいしか設定しないので。
まとめ
自分でプロジェクトを作るときは次のように設定すればよい。
dll を使うとき
インクルード
- lib\vc_dll\mswud
- include
プリプロセッサ
__WXMSW__;_UNICODE;WXUSINGDLL
ライブラリパス
- lib\vc_dll
追加の依存ファイル
- デバッグ
wxmsw31ud_core.lib;wxbase31ud.lib;wxtiffd.lib;wxjpegd.lib;wxpngd.lib; wxzlibd.lib;wxregexud.lib;wxexpatd.lib;kernel32.lib;user32.lib; gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;shlwapi.lib; comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib; version.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)
- リリース
wxmsw31u_core.lib;wxbase31u.lib;wxtiff.lib;wxjpeg.lib;wxpng.lib; wxzlib.lib;wxregexu.lib;wxexpat.lib;kernel32.lib;user32.lib; gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;shlwapi.lib; comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib; version.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)
static link するとき
インクルード
- lib\vc_lib\mswud
- include
プリプロセッサ
__WXMSW__;_UNICODE;
ライブラリパス
- lib\vc_lib
追加の依存ファイル
- 前述 dll を使うときと同じ
wxWidget を VS2015 でビルド [C++]
wxWidget を使ってみようと思いダウンロードすると VS2015 用の
プレビルドがなかったのでビルドしてみました。
まだ使っていないので、あっているかどうかわからないけど、ビルドは
通ったのでとりあえずメモ。 nmake のオプションは build\msw\config.vc
に説明が書いてあるのを参考にしました。
1. ソースコードダウンロード
git clone https://github.com/wxWidgets/wxWidgets.git
2. ビルドの設定が反映されるヘッダー?を作成
include/wx/msw/setup0.h を include/wx/msw/setup.h にリネーム
3. x86 版をビルド
VS2015 x86 Native Tools コマンドプロンプトで以下を実行
4. x64 版をビルド
VS2015 x64 Native Tools コマンドプロンプトで以下を実行
プレビルドがなかったのでビルドしてみました。
まだ使っていないので、あっているかどうかわからないけど、ビルドは
通ったのでとりあえずメモ。 nmake のオプションは build\msw\config.vc
に説明が書いてあるのを参考にしました。
1. ソースコードダウンロード
git clone https://github.com/wxWidgets/wxWidgets.git
2. ビルドの設定が反映されるヘッダー?を作成
include/wx/msw/setup0.h を include/wx/msw/setup.h にリネーム
3. x86 版をビルド
VS2015 x86 Native Tools コマンドプロンプトで以下を実行
4. x64 版をビルド
VS2015 x64 Native Tools コマンドプロンプトで以下を実行
boost::property_tree の使い方メモ [C++]
Sony Camera Remote API の getEvent で取れる json のパースに
boost::property_tree を使うときに、いまいちよくわかってなかったので
メモ。
この api で返ってくる json は {{result:[{...},"null","",[...]}}
みたいなので、null になったり 空文字になったり状態によって変化する曲者。
なのでちゃんと処理しないと例外が出る。例外はデバッグのときに紛らわしい
ので、なるべく出さないようにしたいので、事前に判定したい。
ノードがあるかわからないときは optional で取得すれば例外を出さずに
判定できる。
ただの文字列("null" or "") か何か値が入っている ("{x:y}" or "[...]") かどうか
は child.size() をみればOK(たぶん)
code
output
boost::property_tree を使うときに、いまいちよくわかってなかったので
メモ。
この api で返ってくる json は {{result:[{...},"null","",[...]}}
みたいなので、null になったり 空文字になったり状態によって変化する曲者。
なのでちゃんと処理しないと例外が出る。例外はデバッグのときに紛らわしい
ので、なるべく出さないようにしたいので、事前に判定したい。
ノードがあるかわからないときは optional で取得すれば例外を出さずに
判定できる。
ただの文字列("null" or "") か何か値が入っている ("{x:y}" or "[...]") かどうか
は child.size() をみればOK(たぶん)
code
output
e.first.data()= e.second.data()= child.get_optional("")= child.size()=2 ---- e.first.data()= e.second.data()=null child.get_optional ("")= null child.size()=0 ---- e.first.data()= e.second.data()= child.get_optional ("")= child.size()=0 ---- e.first.data()= e.second.data()= child.get_optional ("")= child.size()=1 ----
const array メンバの初期化 [C++]
メンバ関数のポインタを、配列でメンバ変数に持ちたい。
その配列は固定長なので const にしておきたい。
たまにしか使わないので、毎回つまづくからメモ。
その配列は固定長なので const にしておきたい。
たまにしか使わないので、毎回つまづくからメモ。
前の10件 | -