アプリ版:「スタンプのみでお礼する」機能のリリースについて

パソコンの A  の キーを押したら、A  が 出力されますけど、これはどのような 仕組みになっているのでしょうか。(うまく説明出来ません)
どこにどの様なプログラムがあるのでしょうか。

A 回答 (3件)

こんにちわ。



MPLABですか。私は初耳ですが、PICのプログラムをするもののようですね。

一般的にですが、WindowsやLinuxなどPCのOS上でのプログラミングを行う場合、OS同梱のライブラリがハードウェアの利用を高度に抽象化してくれているため、デバイスドライバを書くような場合を除けばハードウェアを意識する必要はほとんどありません。ライブラリの任意の関数を呼べば(printfとか)、その目的を達成に必要とされるデバイスの詳細な制御は、基本的にライブラリが面倒を見てくれます。

しかし、PICのようなハードウェアそのものを制御するプログラムを書く場合には、ハードウェアの挙動を意識してプログラミングをする必要があります。ライブラリがないということはないと思いますが、抽象化の度合いは相対的に低いはずです。また、最終的には一番ハードに近いアセンブリ言語でデバッグをしたりするはずなので、本当に一番低いところの制御まで理解している必要があるはずです。

後者の方がとっつきにくいと思いますが、そこで学んだことは前者のプログラミングをする時にかならず役に立つので、頑張ってください。
    • good
    • 0

こんばんわ。


たぶん求める答えは直接本には書いていないと思うので、極力簡単に説明してみます。

キーボードの"A"のキーを押すと、キーボードに入っているチップ(電子回路)が、どのキーが押されたかを番号で認識します(すべてのキーに通し番号がついていると思ってください)。

認識した番号を、キーボードからパソコン本体に送ります。たとえばUSB接続のキーボードであれば、内蔵のUSBの処理を行うチップがUSBの信号として先の番号を送ります。パソコン本体側にもUSBの処理を行うチップが搭載されており、受け取ったUSBの信号を解釈して、先の番号を取り出します。

取り出した番号は、パソコン本体に送られます。この番号を誰が受け取るかはパソコンの状態により異なります。電源投入直後であればBIOS(最近ならUEFI)というパソコン本体内蔵のチップに組み込まれている簡単なOSが、WindowsなどのOSが起動した後であればOSが同じように信号を受け取ります。細かく言うならば、実際に受け取るのはそれらのOSの入力を司る部分ということになります。

信号を受け取ったBIOSやOS(の入力を司る部分)は、取り出した番号を見てキーボードで"A"が押されたことを知ります。そうしたら、今度はOSの中の画面出力を制御している部分に"A"という文字を描画するように指令を送ります。

"A"を描画しろという指令を受けた画面描画を司る部分は、それをモニタに描画するためのデータに変換してからモニタに信号を送り、最終的にモニタに"A"が描画されます。画面のどこに何を描画するかは原則としてOSが決めていて(他に表示すべきデータもあるので)、モニタに送られるのはあくまで最終的が描画イメージだけだと思ってください。

"プログラム"という意味での登場人物は、
 1. キーボードに内蔵されている、押されたキーを検出するチップ
 2. キーボードに内蔵されている、パソコン本体と通信を行う機能を司るチップ
 3. パソコンに内蔵されている、キーボードとの通信を行う機能を司るチップ
 4. パソコン本体で動作しているOS (埋め込みのBIOSもしくはWindowsなどのいわゆる"OS")
 5. パソコンに内蔵されている、モニタとの通信を行う機能を司るチップ
 6. モニタに内蔵されている、パソコンとの通信を行う機能を司るチップ
というところでしょうか。かなり単純化していますので厳密に言えば異なりますが。

4.以外のチップにはそれぞれ対応する機能を実装するためのプログラムが製造工程で焼きこまれています。チップに焼かれたプログラムは後から変更することは原則としてできませんが、逆に高速に処理ができ、かつ製造単価が安いのが特徴です。

4.のパソコンの中にあるOSは、WindowsやLinuxなど後から利用者が意のままに変更できますが、柔軟性に富む = 処理が複雑になるため、相対的に非常に高機能なチップを大量に利用します。質問者さんがイメージしている"プログラム"に一番近いのは、おそらくここで動いているものでしょう。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
私が以前質問したことなんですけど、MPLAB の printf を使うことが出来なくて、質問したことがあるのです。MPLAB では、通信の機能を使って、やるようなんですけど私がようやらんのです。他の c言語(LSIC ?) 等では一発で出力しますよね。 (LSICは正しいかどうか自信がありません)

お礼日時:2014/09/24 11:38

学校で教えて貰うか


入門書を紐解いてください

この場はそう言う質問には向いてません

この場で説明出来る範囲で言えば

キーボードが機械的な動きを電気的な信号に置き換える
置き換えられた電気信号をOSという基本ソフトが検知して必要な処理を行う
その結果、モニタという機械に光学的なシンボルが表示される

プログラムといえなくもないが・・・・・
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!