サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
www.hiramine.com
接続例 ※Ethernetシールドに関する接続は省略 サンプルコード #include <SPI.h> // for Ethernet.h #include <Ethernet.h> // for Ethernet #define LED1PIN (7) #define LED2PIN (8) #define LED3PIN (9) #define LINEBUFFERSIZE (128) #define DELIMITER ("&") unsigned char MACADDRESS[] = { 0x90, 0xA2, 0xDA, 0x00, 0x54, 0x65 }; unsigned char IPADDRESS[] = { 192, 168, 1, 50 }; EthernetServer g_server(80); void setup() { Ethernet.begin(MA
接続例 ※Ethernetシールドに関する接続は省略 サンプルコード #include <SPI.h> // for Ethernet.h #include <Ethernet.h> // for Ethernet #define TEMPERATUREPIN (0) #define CDSPIN (1) byte g_cMacAddr[] = { 0x90, 0xA2, 0xDA, 0x00, 0x54, 0x65 }; byte g_cIP[] = { 192, 168, 1, 50 }; EthernetServer server(80); void setup() { Ethernet.begin(g_cMacAddr, g_cIP); server.begin(); } // 温度の取得 double GetTemperature() { int value = analogRe
接続例 サンプルコード #define IN1PIN (9) #define IN2PIN (10) #define VOLUMEPIN (0) void setup() { pinMode(IN1PIN, OUTPUT); pinMode(IN2PIN, OUTPUT); } int Map( int iIn, int iIn1, int iIn2, int iOut1, int iOut2, boolean bConstrain = false ) { double dValue = (double)(iIn - iIn1) * (iOut2 - iOut1) / (iIn2 - iIn1) + iOut1; int iValue = (0 < dValue) ? (int)(dValue + 0.5) : (int)(dValue - 0.5); if( bConstrain ) {
解説 AlertDialog.Builderクラスを使用すると、簡単にダイアログを作成することができます。 AlertDialog.Builderクラスには、setPositiveButton、setNegativeButtonというボタンを設置することができる関数が用意されています。 setPositiveButton、setNegativeButtonでは、ボタンに表示するテキストと、ボタンを押したときに通知するリスナーを引数で指定します。 setPositiveButton、setNegativeButtonで指定したリスナーでは、ボタンを押したときに、ダイアログを閉じる、ダイアログを閉じない、をコントロールすることはできません。必ず、閉じてしまいます。 ボタンを押したときに、ダイアログを閉じる、ダイアログを閉じない、をコントロールするには、ボタンオブジェクトを取得し、ボタンオブジェ
接続例 サンプルコード #include <Servo.h> #define SERVOPIN (9) #define VOLUMEPIN (0) Servo g_servo; void setup() { g_servo.attach(SERVOPIN); } int Map( int iIn, int iIn1, int iIn2, int iOut1, int iOut2, boolean bConstrain = false ) { double dValue = (double)(iIn - iIn1) * (iOut2 - iOut1) / (iIn2 - iIn1) + iOut1; int iValue = (0 < dValue) ? (int)(dValue + 0.5) : (int)(dValue - 0.5); if( bConstrain ) { int iOu
ホーム > プログラミング > モデルビューアを作る ( Android + OpenGL ES 1.0/1.1 ) ( Eclipse 3.7版 ) (開発環境として「Eclipse」を使用した、古い情報です。 開発環境として「Android Studio」を使用した、新しい情報は、 「ホーム > プログラミング > モデルビューアを作る ( Android + OpenGL ES 1.0/1.1 ) ( Android Studio 2.3.3 版 )」) Android SDK と OpenGL ES 1.0/1.1 を用いて再利用可能なOpenGLレンダラクラスを作成し、作成したOpenGLレンダラクラスを用いてモデルビューアを作成する方法を解説します。 使用開発環境は、Eclipse 3.7.2 ベースの Pleiades です。
ホーム > フィジカルコンピューティング > RCカー を作る ( バギー工作基本セット + Arduino + Bluetooth + Androidスマートフォン )
抵抗器の抵抗値の読み方 狭い場所でも可読性を確保できるよう工夫されてる抵抗器の抵抗値の表現の読み方に関してまとめています。 GPSのNMEAフォーマット GPSモジュールからは、NMEAフォーマットの情報が送信されます。NMEAフォーマットに関してまとめています。
解説 JPEGカメラモジュールを使用すると、写真を撮ることができます。 SparkFunのウェブサイトの商品ページにリンクのある 「JPEG Camera Libraries.zip」 の中にある、「JPEGCamera.cpp」「JPEGCamera.h」を使用すると、簡単に写真を撮ることができます。 Arduino IDE のバージョン1.0以降を使用する場合には、「JPEGCamera.cpp」「JPEGCamera.h」に多少の書き換えが必要です。 ・JPEGCamera.cpp、JPEGCamera.h の 「#include "WProgram.h"」 を 「#include "Arduino.h"」 に書き換える。 ・JPEGCamera.cpp の 「#include "NewSoftSerial.h"」 を 「#include "SoftwareSerial.h"」 に書
Arduinoの環境構築、LED、タクトスイッチ、CdSセル、等に触れています。 初心者向けの本です。初心者でない人は、内容に物足りなさを感じるかもしれません。 本の半分は、リファレンスとなっています。具体的には、Arduino言語のリファレンス、Arduino公式ライブラリ(EEPROM、SoftwareSerial、Stepper、Wire、Servo、Firmata、LiquidCrystal、Ethernet)のリファレンス、Arduino公式ではないいくつかのライブラリ(TextString、MsTimer2、ServoTimer)のリファレンスがあります。 リファレンスは、WEB上にもありますが、ぱらぱらめくれる本として手元にあると、さっと調べることができるので、重宝します。
解説 1.まとめ Visual C++ 2005 (Visual Studio 2005) を使用した「メモリリークの検出」に関してまとめます。 より正しくは、Visual C++ 2005 (Visual Studio 2005) の出力ウィンドウに「メモリリークの情報をダンプする方法」に関してまとめます。 (「メモリリークのメモリ確保場所を特定するには」を行うことで、メモリ確保場所のソースファイル名、行番号がダンプされるようになります) プログラムの終了直前の位置で、メモリリークの情報をダンプする _CrtDumpMemoryLeaksという関数を呼び出すと、メモリリークの情報が出力ウィンドウにダンプされるようになります。 ただし、この方法による「メモリリークの検出」は、デバッグバージョンの場合(プリプロセッサの定義で _DEBUG が定義されている場合)にしか機能しません。(_DEB
解説 OpenGLで、日本語文字列を描画する関数は、今のところ標準では用意されていないので、自作します。 OpenGLで、日本語文字列を描画するための一つの方法は、 ① WindowsAPIを用いて、日本語フォントオブジェクトを作成する。 ② ①で作成した日本語フォントオブジェクトと、WindowsAPIを用いて、日本語文字列のOpenGL用の白黒ビットマップを作成する。 ③ ②で作成した日本語文字列のOpenGL用の白黒ビットマップと、Openglの関数を用いて、日本語文字列を描画する。 です。 再描画のたびに、毎回①②③を処理するのは効率的ではありません。 (フォントが変わらないのであれば、2回目以降の描画時には、①の処理は1回目の処理の結果を再利用する方が効率的です。 フォントも文字列も変わらないのであれば、2回目以降の描画時には、①②③の処理は1回目の処理の結果を再利用する方が効率
クラスの operator を定義するとき、戻り値の型はどうすべきかのまとめ。 全体まとめ 代入演算(「=」) 和差積商(「+」「-」「*」「/」) 自身に対する和差積商(「+=」「-=」「*=」「/=」) 比較演算(「==」「!=」「<」「>」) 配列アクセス(「[ ]」) 実装例 参考 サンプルクラス 以下のクラスに、 operator を定義するとします。 class CPoint3d { public: double x, y, z; CPoint3d(double a = 0, double b = 0, double c = 0) : x(a), y(b), z(c) {} }; 全体まとめ 演算の連鎖ができるように、戻り値の型を void ではなく、ユーザー定義型にする。 自身を返す関数は、戻り値の型を、非const参照にする。 ユーザー定義型の一時オブジェクトを返す関数は、
Windowsプログラマー必読書です。Windowsでプログラミングをするならばこれを読まなくてははじまりません。Windowsプログラミングのイベントドリブンをどう実装すべきかを正しく学ぶことができます。始めから終わりまで通して読むべき教科書本です。 MFCプログラマー必読書です。MFCを使用してプログラミングをするならばこれを読まなくてははじまりません。WindowsプログラミングのイベントドリブンがどうMFCで隠蔽され、プログラマーは何をすべきかを正しく学ぶことができます。始めから終わりまで通して読むべき教科書本です。
目的のフォルダを開くエクスプローラのショートカットを作成するには、 エクスプローラーのショートカットの「リンク先」欄に、 /e, [目的のフォルダパス] を追加します。 /eオプションにより、フォルダ・バーを表示してエクスプローラが起動するようになります。 /eオプションを省略すると、フォルダ・バーを表示しないでエクスプローラが起動します。 以下は、 d:\ を目的のフォルダとするエクスプローラーのショートカットの設定例です。 ご意見、ご感想、ご質問、ご要望等は、「コメントを投稿する」もしくは「ホーム > コンタクト」よりお願いいたします。 内容の誤り、誤字脱字、リンクミスなどの問題点を発見された場合には「コメントを投稿する」もしくは「ホーム > コンタクト」より連絡していただけると幸いです。 Copyright (c) 2005-2016 Nobuki HIRAMINE All righ
解説 HTTP通信を実装する方法としては、WindowsソケットAPI を利用する方法、WinInet API を利用する方法、MFC を利用する方法、などがあります。 ここでは、WinInet API を利用した、HTTP通信のリクエスト送信とレスポンス確認、の方法をまとめます。 WinInet API を利用する方法は、WindowsソケットAPI を利用する方法に比べて、SSL通信(https://~に対する通信)の処理を楽に実装できるという利点があります。 WinInet API を利用する方法は、MFC を利用する方法に比べて、MFC を利用できない、利用したくない場合でも実装できるという利点があります。 準備 ・windows.h および Wininet.h のインクルード #include <windows.h> #include <Wininet.h> をファイルヘッダー部
解説 タスクトレイ (デスクトップ画面の下などに表示されているタスクバーの右端などの時刻表示といくつかの常駐アプリケーションアイコンがあるところ) に常駐するアプリケーションを作成する方法をまとめます。 タスクトレイに常駐するアプリケーションを作成するには、アプリケーションのメインウィンドウとして登録するウィンドウの、ウィンドウクラスに、以下の処理を用意します。 タスクバーに表示されない、かつ、見えない、ウィンドウを作成する処理。 ウィンドウ破棄時に、ウィンドウクラスオブジェクト自身が自分自身を削除する処理。 タスクトレイに対して、アイコン(、ツールチップ文字列、コールバックメッセージコード)を登録/変更/削除する処理。 タスクトレイのアイコンに対するイベントの応答処理 ウィンドウ作成時に、「タスクトレイに対して、アイコンを登録する処理」を呼び出す処理。 ウィンドウ破棄時に、「タスクトレイ
解説 MSXML を利用して XMLファイル を解析する方法をまとめます。 便利機能 ・IXMLDOM~Ptr を使う MSXMLの処理においては、IXMLDOM~型のオブジェクトを扱います。 IXMLDOM~型には、型名の語尾にPtrが「付く」型と、「付かない」型があります。 型名の語尾にPtrが「付く」型は、スマートポインタ型なので、特に理由がない限り、型名の語尾にPtrが「付く」型を使います。 型名の語尾にPtrが「付かない」型を使う場合には、オブジェクトが不要になった際には Release関数を呼び出す、型変換は QueryInterface関数を通して行う、等が必要になります。 ・CComVariant、CComBSTRを使う MSXMLの処理においては、BSTR型やVARIANT型のオブジェクトを扱います。 BSTR型やVARIANT型には、ラッパークラスである、CComVar
OpenGLとWindowsAPIを用いて再利用可能なOpenGLレンダラクラスを作成し、作成したOpenGLレンダラクラスを用いてモデルビューワを作成する方法を解説します。 使用開発環境は Visual C++ 2008 Express Edition Service Pack 1 です。 (OpenGLとMFCを用いた モデルビューワを作る(OpenGL+MFC) (Visual C++ 2005版) もあります。 Direct3DとWindowsAPIを用いた モデル ビューワ を作る(Direct3D+WindowsAPI) (Visual C++ 2008版) もあります。)
トラッキング(マウス操作による描画領域の回転、拡大縮小、平行移動)に関する処理を担うトラックOpenGLビュークラスを、ベースOpenGLビュークラスの派生クラスとして作成します。 プロジェクトの作成 「メニュー/新規作成/プロジェクト」を選択します。 プロジェクトの種類:MFC テンプレート:MFC アプリケーション プロジェクト名:OpenGLTrack 場所:適当なフォルダを指定 ソリューションのディレクトリの作成:チェックしない でOKボタンを押します。 以降、「01.ベースOpenGLビュークラスを作る」におけるプロジェクト作成と同じ設定でプロジェクトを作成します。 ビルドし、エラー、警告がないことを確認します。 ベースOpenGLビュークラスファイルをプロジェクトに追加 「01.ベースOpenGLビュークラスを作る」で作成した OpenGLBaseView.cpp OpenGL
OpenGLとMFCのDoc/Viewアーキテクチャーを用いて再利用可能なOpenGLビュークラスを作成し、作成したOpenGLビュークラスを用いてモデルビューワを作成する方法を解説します。 使用開発環境は Visual C++ 6.0 です。 (使用開発環境が Visual C++ 2005 の モデル ビューワ を作る(OpenGL+MFC) (Visual C++ 2005版) もあります。)
解説 1.まとめ Visual C++ 2005 (Visual Studio 2005) を使用した、「メモリリークのメモリ確保場所の特定」に関してまとめます。 より正しくは、Visual C++ 2005 (Visual Studio 2005) の出力ウィンドウに「検出したメモリリークのメモリ確保場所のソースファイル名、行番号をダンプする方法」に関してまとめます。 (「メモリリークを検出するには」も同時に実施する必要があります) 「メモリ確保関数をデバッグバージョンの関数に置き換える定義」をソースファイルの先頭に記述すると、検出したメモリリークのメモリ確保場所のソースファイル名、行番号が出力ウィンドウにダンプされるようになります。 ただし、この方法による「メモリリークのメモリ確保場所を特定」は、デバッグバージョンの場合(プリプロセッサの定義で _DEBUG が定義されている場合)にし
線分AB、CDがあったときに、その交点を求めるには? 要素は2次元空間内に存在するものとします。 解説 線分AB上の任意の点Pは、媒介変数 r を用いて、以下のように表現できます。 P = A + r ( B - A ) ( r は[0~1]の値を取る) ・・・式① 同様に、CD上の任意の点Qも、媒介変数 s を用いて、以下のように表現できます。 Q = C + s ( D - C ) ( s は[0~1]の値を取る) ・・・式② PとQが同一点になる場合の r と s を求めれば、ABとCDの交点は求まったことになります。 というわけで、P = Q を解きます。 P = Q ⇔ A + r ( B - A ) = C + s ( D - C ) X、Yに関する連立方程式にします。 ⇔ Ax + r ( Bx - Ax ) = Cx + s ( Dx - Cx ) Ay + r ( By
平面A、線分ABがあったときに、その交点を求めるには? 要素は3次元空間内に存在するものとします。 解説 平面Fを a x + b y + c z = d ・・・式① 線分ABを、媒介変数tを用いて、 P = A + t e ・・・式② A = ( Ax, Ay, Az ) e = [ Bx-Ax By-Ay Bz-Az ] = [ Ex Ey Ez ] とします。 式②を成分に分解します。 x = Ax + t Ex y = Ay + t Ey z = Az + t Ez 式①に代入します。 a x + b y + c z = d ⇔a (Ax + t Ex) + b ( Ay + t Ey ) + c ( Az + t Ez ) = d ⇔a Ax + t a Ex + b Ay + t b Ey + c Az + t c Ez = d ⇔t ( a Ex + b Ey + c Ez
※1:CLOCKS_PER_SECが1000の場合 ※2:timeBeginPeriod(1)によって、最小分解能を1[ミリ秒]にした場合 サンプルコード #include <conio.h> // _getch() #include <time.h> // clock_t #include <windows.h> // GetTickCount() #include <mmsystem.h> // timeGetTime() #pragma comment( lib, "winmm.lib" ) int _tmain(int argc, _TCHAR* argv[]) { printf( "最小測定単位を10回計算します。\n" ); unsigned int ui; // clock { printf( "clock()\n" ); clock_t tTime[11]; tTime[0
解説 エンディアン(endian、byte order)に関してはLittle Endian、Big Endianのどちらが正しいのかは不明です。 「チャンク」というデータ単位の概念があります。 「チャンク」というデータ単位の概念は、ツリー構造になっています。 (下のツリー構造図の各ノードは、 チャンクID (チャンク種類の通称) となっています。) 0x4D4D (Main chunk) ┣0x3D3D (3D editor chunk) ┃ ┣0x4000 (Object block) ┃ ┃ ┣0x4100 (Triangular mesh) ┃ ┃ ┃ ┣0x4110 (Vertices list) ┃ ┃ ┃ ┣0x4120 (Faces description) ┃ ┃ ┃ ┃ ┗0x4130 (Face material list) ┃ ┃ ┃ ┗(省略) ┃ ┃ ┗(省略)
解説 Windowsに付属するperfmon.exeで調べることのできるパフォーマンスカウンター値(CPU使用量、各種メモリ使用量、他)の現在のプロセスに関する値を取得する関数は、今のところ標準では用意されていない(ような)ので、自作します。 実装内容としては、 PdhEnumObjectItems を用いて、インスタンスリストを取得します。 インスタンスリストの各インスタンスに関して、プロセスIDを取得します。 プロセスID値が、現在のプロセスのプロセスIDと一致するインスタンスを探すことで、現在のプロセスのインスタンス名を求めます。 PdhMakeCounterPath を用いて、現在のプロセスのインスタンス名と各種カウンター名とから、カウンターパスを作成します。 PdhCollectQueryData を用いて、作成したカウンターパスから、現在のプロセスのインスタンス名に関する各種パ
const char* const の2つのconstがそれぞれが何の値を変更不可にするのかのまとめ。 const char* char* const const char* const const char* の変数は、定数データへのポインタです。中身の変更不可、アドレスの変更可です。 覚え方 *「アスタリスク」は、その左側すべてに係る。 ↓ 「const char」のポインタ ↓ 「文字を変更不可能な文字列」へのポインタ ↓ 中身の変更は不可、アドレスの変更は可 char szAAAAA[ ] = "AAAAA"; char szBBBBB[ ] = "BBBBB"; const char* pBuffer = szAAAAA; // 定数データへのポインタ pBuffer[1] = 'C'; // 不可(コンパイルエラー) pBuffer = szBBBBB; // 可(正しい) c
点が多角形ループの内側にあるか外側にあるかを判定するには? 要素は2次元空間内に存在するものとします。 解説 内外判定の基本的な考え方として、「内外を判定したい点から発するレイ(ray:一条の光)を仮定し、レイが多角形の辺を何回横切るかを数え、偶数回横切るとき、点は多角形の外側、奇数回横切るとき、点は多角形の内側と判定することができる」という考え方があります。 ただ、この考え方に従って実装を行うと、レイに対して点接触になる点のある多角形や、レイに対して線接触になる辺のある多角形の場合に判定を誤ってしまう実装になることがあります。 下に示す実装では、レイをXプラス方向に発して、多角形の辺がレイを、「上から下に横切るときには横切り回数を1引き、下から上に横切るときには横切り回数を1足すこととする」ことや、「レイの線上にある点はレイより上にあることとする」ことにより、レイに対して点接触になる点の
次のページ
このページを最初にブックマークしてみませんか?
『hiramine.com - ホーム』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く