• 検索結果がありません。

pcclub

N/A
N/A
Protected

Academic year: 2018

シェア "pcclub"

Copied!
34
0
0

読み込み中.... (全文を見る)

全文

(1)

HandleIO にふれる

Copyright, 2010 © Scarly Hardware

ヒント

プログラムは別途配布しています。

(2)

HandleIO にできること

• HandleIO はパソコンからの信号入出力 (I/O) を簡易に行うことができます。

• FT245 という USB デバイスを制御できます

パソコンからの信号出力を FT245 に向けて行う と、 FT245 は信号を8 bit 単位で出力してくれ ます。

同様に、 FT245 からの入力もパソコンに向けて (8bit 単位で ) 送ってくれて、パソコンは信号を 取り込めます。

(3)

LED をつないでみる

(4)

LCD をつないでみよう

(5)

LED につなぎ変えて信号の送

信パターンを見てもらおう

(6)

温度計を接続して温度を計測

(7)

Handle に関して

(8)

ウインドウハンドルという番

• ウインドウズでは一つ一つのウインド ウに16進数で番号を振っている

• 各ウインドウの番号がわかると、ウイ ンドウを操作することが可能となる。

(9)

HANDLELIST 関数

• ウインドウハンドル一覧を表示する

(10)

ほかのウインドウにいたずら

してみよう

• ウインドウを半透明にしてみる (layer 関数 )

• ウインドウのタイトルを書き換えてみ る (sendtext 関数 )

• ウインドウの内容を書き換えてみる (REPLACESEL 関数 )

(11)

HANDLEFIND 関数

• ウインドウタイトル一覧からウインド ウ名が一致するものをリストアップす る

(12)

GETWINDOWHANDLE 関数

• ウインドウハンドル( 16 進8桁)の番 号から、親子関係のウインドウ(ハン ドル番号)などを取得する

(13)

SendText 関数

• ほかのウインドウのタイトルテキスト を書き換えるのに使用する

(14)

REPLACESEL 関数

• エディタなどの文字列追記に使用する

(15)

BNCLICK 関数

• ボタンを押したことにしてくれる関数 で、引数にボタンのハンドルを入力し てあげる。

(16)

WhatTheTimeNow 関数

• 現在時刻を取得、表示してくれる関数

(17)

時刻連動

• 何時になると何かをする

• 一時間おきに温度を計測する

• 14 時 00 分の温度を ( 一日おきに ) 計測 する

(18)

WAITTIME 関数

特定の時刻まで WAIT してくれる関数

パラメータは秒 分 時の順に与える。(分や 時は書かなくてもよい)

オルゴールの定時再生

(下記の場合には 12 : 00 分に鳴る)

WAV ファイルでオルゴールを取り込んでおく 必要性あり

– WAITTIME d’0 d’0 d‘ 12 ♪ loop_5.wav

(19)

WAITPUMP 関数

• 数 ms ~数分待ちたい場合に使用する

何らかの作業を順番に行うときに、一旦 停止していてほしいときがある。そのよ うなときに用いる関数

2000ms(2 秒 ) 待つ場合

• waitpump 2000

お風呂タイマー / カップラーメンタイ マー / キッチンタイマー

(20)

EXEC 関数

• 別のプログラムを呼び出したい場合に 用いる

• exec notepad

(21)

ここからは、時間に余裕があ

る場合に解説

(22)

64bit 化とレガシーデバイス化

パラレルポートはレガシーデバイス

SCSI ・ゲームポートはレガシーデバイス

BEEP 音を発する (8254 経由 ) スピーカは レガシーデバイス

(23)

32bit Windows と 64bit

Windows

一度に計算する(処理する)量が違う さらに CPU のレジスタ数が増えた。

関数などを呼び出すときに、(関数のパラメー タをスタックに積まず、 CPU の レジスタ に 書き込んで処理をする場合がある→ CPU 有効 利用によりプログラムが高速実行される)

64bit Native な( 64Bit システム用に作られ

た)プログラム 以外の 32bit プログラムもある 程度動作する。

(24)

32bit Windows と 64bit

Windows

• HandleIO は 32bit 専用プログラムなので、正常 に動作しない機能もある。

Beepをかけようと、 ( HandleIO を用い

て) 0x61 番 I/O ポートを操作してみると、 64bit Windows 上ではなかなか思い通りに動かない。

これは 64bit windows7 ではセキュリティが強 化されている事が要因

• out h'61 b'00000011

• out h'61 b'00000000

(25)

セキュリティが強化されてい

る事による不具合

• 未署名なデバイスドライバは動作して くれない ( 一時的に動かす方法はある )

• 一時的に動作させる場合には F8 キーを 押しながらブートする

(26)

64bit Win7 では、 I/O の 61h

をどう割り当てているのか

• マザーボード リソース

(27)

I/O アクセス実験

• 64bit WINDOWS7 から 0x61 番ポー トを直接たたいてみる

(セキュリティが影響しているらしく、一 瞬しかならない)

• 32bit WINDOWS XP (仮想マシン上) から 0x61 番ポートをたたいてみる

(28)

BEEP 音は 64bit 環境でも鳴

るのか

• BEEP 関数を呼び出してみる

• BEEP 関数は kernel32.dll に存在する

(さらには ntdll.dll を呼び出してい る)。

(29)

BEEP 音は 64bit 環境でも鳴

るのか

参考文献:

http://cpplover.blogspot.com/2010 /01/windows-7beep.html

によると、

8254 出力ラインは、サウンドカードの 専用入力につながってる

beep はもう、パソコンのスピーカーか ら再生されている

(30)

レジスタ演算

• HandleIO は変数のない言語… すべてはレジスタに記憶

• REG100/REG10 等 一個のレジスタに は32 bit のデータを格納できる

• mov reg100 d’10 mov reg101 d’5

calc reg100 / reg101 reg102 dispd reg102

(31)

decz 関数

レジスタ -1を演算して結果が0の時には すぐしたの命令を飛ばして、次の行に進む

• mov reg100 5

• mov reg200 1

• l'loopstart

• calc reg200 * d'10 reg200

• decz reg100

• jmp l'loopstart

• l'finish

• dispd reg200

(32)

HandleIO とプログラミング

なぜプログラミングに話を持っていくのか…

プログラムを自分で書くと、発散の方向性にむ かう

応用性の高さ 色々な応用が利く

外部の状態を取り込んで何かをさせる

温度計をつないで、何度以下ならヒータース イッチ On

– CDS( 光導電セル ) をつないで、暗くなってきた ら自動で照明 On

(33)

HandleIO の難しいところ

• アセンブラの考え方をベースにしてい るため、使いこなすにはそれなりの知 識が必要。条件分岐などさせると、結 構ややこしくなる

(34)

クロージング

64bit 化した、 Native なアプリケーショ ンにする必要性

• Handle 一覧を表示するとき、 64bit で は2倍幅の一覧表示ができるはず

レジスタも 32 ビットで 1 レジスタでは なく、 64 ビットで 1 レジスタとできる はず

参照

関連したドキュメント

パキロビッドパックを処方入力の上、 F8特殊指示 →「(治)」 の列に 「1:する」 を入力して F9更新 を押下してください。.. 備考欄に「治」と登録されます。

燃料取り出しを安全・着実に進めるための準備・作業に取り組んでいます。 【燃料取り出しに向けての主な作業】

(2)

・電源投入直後の MPIO は出力状態に設定されているため全ての S/PDIF 信号を入力する前に MPSEL レジスタで MPIO を入力状態に設定する必要がある。MPSEL

信号を時々無視するとしている。宗教別では,仏教徒がたいてい信号を守 ると答える傾向にあった

Dual I/O リードコマンドは、SI/SIO0、SO/SIO1 のピン機能が入出力に切り替わり、アドレス入力 とデータ出力の両方を x2

検出電圧が RC フィルタを通して現れます。電流が短絡保護 のトリップレベルを超えた場合、 ローサイドの三相すべて の IGBT はオフ状態になり、フォールト信号出力 V

 筆記試験は与えられた課題に対して、時間 内に回答 しなければなりません。時間内に答 え を出すことは働 くことと 同様です。 だから分からな い問題は後回しでもいいので