あなたは   人目の訪問者です。

プログラミングのページ

パラレル通信、シリアル通信、OpenGL等、これまでに作った無数のプログラムを少しずつ公開していきます。
ご意見、リクエスト、バグレポート等はhirotake@ieee.orgまでお願いします。

No Image

Photo Cabinet Ver1.0.1


Jpegフォーマットの写真を、Exifに埋め込まれた撮影日情報を元に整理するアプリです。起動するとアプリケーションと同じフォルダにPhotoという名前のフォルダが作成され、Windowが開きます。そのWindowにカメラで撮影して得たJpegファイルをドロップすると(複数のファイルをドロップしたり、フォルダをドロップしたりすることが可能)、そのファイルのExif情報にある撮影日を元にPhotoフォルダの中にコピーします。

例えば、写真の撮影日が2010年5月15日12時10分25秒であった場合、そのファイルは、Photoフォルダの中の、2010フォルダの中の、05フォルダの中の、15フォルダの中に、20100515-121025.jpgという名前でコピーされます。(元のファイルはそのまま残ります。)

同じ時刻に撮影されたJpegファイルが同時にドロップもしくは既にPhotoフォルダの中に入っていた場合は、両者のファイル内容を比較し、異なる場合のみ、20100515-121025-002.jpgの様な名前でコピーされます。

複数のカメラ(特にメーカが異なる場合)で写真を撮る場合や、写真がハードディスクの色々な場所に散らかってしまっている場合に便利です。(ハードディスク内のフォルダをまとめてドロップすれば、Exif情報付きの写真Jpegファイルを探し出してPhotoフォルダ内に整理してコピーしてくれます)


実行ファイル PhotoCabinet.zip (212KB)

JDBS Ver 2.0.6


PostgreSQLとPHPを使った業績登録&公開システムです。

大学の研究室等では、毎年膨大な数の原著論文や著書が新たに執筆されます。普段から管理をしておかないと、業績一覧が必要になった時に時間がかかって大変です。JDBSを使うとホームページから業績の登録・修正・削除ができます。登録されたデータは、自動的に業績一覧を公開するページに反映されます。登録した業績は、全てを一つのページで公開できることはもちろん、年度毎や著者(関係者)毎に専用のページを作成することも可能です。

誰もがホームページを介して業績を登録することが可能になりますので、研究室等で新しい成果が出たら、研究の代表者が必ずこのシステムを使って情報を登録するようにしておけば、常に最新の業績一覧が管理できることになります。

現在、JDBSでは原著論文や国際会議、特許等、15種類の業績を管理できます。(種類や内容はインストールの際に自由に追加・削除が可能)。

以前(Ver. 1.0.6)に比べて、システムのインストールが非常に簡単になりました(ReadMe参照)。また、著者やタイトルだけでなく、アブストラクトやPDFファイル、写真等も同時に登録することが可能になりました。データのバックアップ機能も追加しました。


システムのデモのページを作りました。画像のアップロード機能、データのバックアップ機能は外してあります。自由に使ってみてください。

業績登録のページ
http://hirotake.jpn.org/JDBS_DEMO/admin

登録した業績を公開するページ
http://hirotake.jpn.org/JDBS_DEMO/


ソース JDBS_Ver. 2.0.6.tar.gz (28KB)
(Linux用 RedHat9.0で動作確認)

2004.04.12 入力情報が一部文字化けする問題を修正。
2006.07.11 登録済みの業績が一部表示されない不都合を修正。

非商用に限りソースコードの利用は自由です。

JpegShow Ver1.0.2


Jpegファイルを閲覧するソフトです。自動再生機能も付いています。表示を速くするためにある程度の枚数の画像をメモリに常駐させるので、メモリが少ないマシンで非常に大きい画像を数多く含むフォルダを閲覧する場合、仮想メモリを使ってしまって返って動作が遅くなる時があります。CTreeCtrlの使い方がよく分かって無いのでコードの効率は悪いと思います。ソースは例によって汚いです。

今回はJpegの読み込みにはIndependent JPEG groupのライブラリは使わず、OleLoadPictureFileを使ってます。

実行ファイル JpegShow1.0.2.exe (48KB)
ソースファイル JpegShow 1.0.2.lzh (238KB) (Visual C++ Ver 6.0用)

ソースコードの利用は自由です。自己責任で御使用ください。

Inverse Kinematics


キーボードで手のひらの位置を操作すると腕や体がついてきます。
C言語とOpenGLの練習の為に昔々に作った物です。ソースは汚いです。

操作方法
↑ : 手のひらを上に移動
→ : 手のひらを右に移動
← : 手のひらを左に移動
↓ : 手のひらを下に移動
f : 手のひらを前に移動
b : 手のひらを後ろに移動
+ : 肘を右回転
− : 肘を左回転

実行ファイル InverseKinematic.exe (40KB)
ソースファイル InverseKinematic.lzh (231KB) (Visual C++ Ver 6.0用)

ソースコードの利用は自由です。自己責任で御使用ください。

Bounce


3つのボールが飛び跳ねる様子を周りから眺めるプログラムです。
OpenGLでモデルの材質や光源を設定する際のサンプルになると思います。スポットライト、GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR、GL_SPOT_CUTOFF等を使ってます。

実行ファイル Bounce.exe (32KB)
ソースファイル Bounce.lzh (182KB) (Visual C++ Ver 6.0用)

ソースコードの利用は自由です。自己責任で御使用ください。

Image Resize Ver 1.0.4

Jpegファイルのサイズを一括変換するプログラムです。画面で出力する画像のサイズと質を指定してウインドウに複数のファイルをドロップすることでサイズを一括して変更できます。サイズ変更後のファイルはオリジナルが保存されているフォルダと同じフォルダに出力され、オリジナルのファイル名に画像サイズが追加されたファイル名になります。(例: car.jpg -> car_100x150.jpg)
デジカメ等で撮った写真をホームページに載せる際に一括してサイズを落とすのに使うと便利です。ドロップするファイルの拡張子は.jpg .jpeg .JPG .JPEGである必要があります。それ以外のファイルは無視されます。
(このプログラムはIndependent JPEG groupのライブラリを利用しています。)

分かっているバグ
・拡張子が.jpg .jpeg .JPG .JPEGであるにも関わらずJpegファイルで無いファイルをドロップすると落ちる。

実行ファイル ImageResize.exe (320KB)
ソースファイル 必要な方は hirotake@ieee.org まで連絡ください。 (Visual C++ Ver 6.0用)
画像なし

単純データ送受信


DirectX version7を使った通信プログラムの例です。
展開するとできるHostフォルダにサーバ、Clientフォルダにクライアントのプロジェクトファイルが入っています。サーバをデバッグモードで立ち上げた後、クライアントのソフトウエアを実行するとクライアントから"testtest"の文字がサーバへ送信され、サーバのデバッグ用ウインドウに受け取った文字が表示されます(TRACE使用)。
プログラムでは127.0.0.1にデータを送る設定になっています(ソース埋め込み)。

ソースファイル DataTrans.lzh (232KB) (Visual C++ Ver 6.0用)

ソースコードの利用は自由です。自己責任で御使用ください。

GraphFunc


グラフを描画するプログラムです。他のプログラムに組み込んで使います。
グラフ領域のサイズを自由に変更することができます。
使い方の説明書は無いので解析してください。

ソースファイル GraphFunc.lzh (63KB) (Visual C++ Ver 6.0用)

基本的にソースコードの利用は自由ですが、どのような用途に使うのか連絡をもらえるとうれしいです。(hirotake@ieee.orgまで)
画像なし

RFID_COM


オムロン社が販売している小型リーダライタV700-HMD11をウインドウズアプリケーションがら利用する為のプログラムです(シリアル通信を使ったRFIDへのデータの読み書き)。プログラム自体はオムロン社とは関係有りません。このプログラムについてオムロン社に尋ねることはしないでください。このプログラムは動作が少しおかしい時もあります。機器が壊れても責任は取れませんので注意してください。あくまでも例です。

コマンドの説明
 bool RFID_Set_ID(long int tag_id); 
  アンテナ内にある全てのRFIDにtag_idで示した番号を書き込む
  (RFIDの1ページ目を独自の番号の記憶領域として利用します。
  全世界固有の番号とは関係ありません。)

 long int RFID_Check_ID();
  アンテナ内にあるRFIDの番号を得る。アンテナ内に複数のRFID
  がある場合、どのRFIDの番号が得られるかは不定。

 bool RFID_Write_Data(int page, BYTE *data);
  pageページ目の領域に*dataで示された8バイトのデータを
  書き込む

 bool RFID_Read_Data(int page, BYTE *data);
  pageページ目の領域から8バイトのデータを読み込み*data
  に格納する

このプログラムではシリアル通信のポート名がCOM5にプログラム内で設定されています。各環境に合わせて修正してください。(RFID.h内)

ソースファイル RFID_COM.lzh (102KB) (Visual C++ Ver 6.0用)

ソースコードの利用は自由です。自己責任で御使用ください。
画像なし

シリアル通信サンプルプログラム

その名の通りシリアル通信の簡単なサンプルプログラムです。このプログラムではシリアルに"Thisi is a test."という文字を送ります。

ソースファイル serial.lzh(12.2KB) (Visual C++ Ver 6.0用)

ソースコードの利用は自由です。自己責任で御使用ください。
画像なし

パラレルポート通信ライブラリNT/2000用

NTやWindows2000ではそのままではプログラムから直接アクセスできないパラレルポートをアクセス可能にするUSERPORT.sysを使いやすくするためのライブラリ。使い方の説明はこちら(HowToUse.doc)。USERPORT.sysは http://www.embeddedtronics.com/design&ideas.html
から別途ダウンロードしてください。(USERPORT.sysはTomas Franzon氏が作成したドライバです。)

ライブラリ&サンプルプログラム(パラレルポートの入力状態を画面に表示)
  Parallel.lzh (72.5KB) (Visual C++ Ver 6.0用)

ソースコードの利用は自由です。上のソースファイルにはUSERPORT.sysは含まれていません。

画像なし

時間計測サンプルプログラム

CPUのクロック計測、Performance Counterを使った時間計測、マルチメディアタイマーを使った時間計測のサンプルプログラムです。
コンパイルする時にはWINMM.LIBをリンクする必要があります。

ソースファイル Timer.lzh (11.3KB) (Visual C++ Ver 6.0用)

ソースコードの利用は自由です。自己責任で御使用ください。

ラベリング画像処理のプログラム

入力カラー画像をグレースケール化、二値化、ラベリング、面積の大きい順に領域をソート、面積の大きさが1番から10番までの領域を抽出、その処理途中の画像と結果を表示するプログラムです。高速化のためにラベリング、各ラベルの面積カウント等を同時に1パスで行う様にプログラムを工夫しています。

ソースファイル Labeling.lzh (376KB) (Visual C++ Ver 6.0用)

ソースコードを他のソフトウエアに流用する場合は以下のようにしてください。

●ソフトウエアとしてコンパイルして配布する場合
ラベリング部分の処理はこのホームページからダウンロードしたソースコードを利用していることをソフトウエアから分かるようにしてください。(ヘルプやReadMeにコメントを付ける等)

●ソースコードを他のプロジェクトの一部として再配布する場合
ラベリング部分のソースコードをこのホームページからダウンロードしたことが分かるようにラベリングの関数を含むファイルの先頭にコメントを付けてください。
画像なし

クイックソートのプログラム

データを大きさ順に並べ変えるプログラムの例です。このプログラムでは200個の乱数を発生させ、大きい順に並べ替えます。並べ替える際、データを入れ替える処理を外部関数(関数へのポインタ)として引数に取ることができますので、その外部関数を変更することによって複数の要素を持つテーブルのデータも並べ替えることができます。

ソースファイル QuickSort.lzh (10KB) (Visual C++ Ver 6.0用)

ソースコードの利用は自由です。自己責任で御使用ください。