沼津高専 電子制御工学科 | ||||||
|
||||||
改訂記録 | ||||||
---|---|---|---|---|---|---|
版数 | 作成日 | 作成者 | 承認 | 改訂内容 | ||
A01 | 2001.1.11 | 田口 | 大庭 | 初版 | ||
A02 | 2001.3.13 | 田口 | 遠山 | 最終的な仕様に修正 |
●int fc=open("/dev/irs_ts",f_mode) 第1引数:赤外線・タッチセンサドライバを指定 第2引数:ファイルの読み書きの属性(O_RDONLY、O_WRONLY、O_RDWR) ・赤外線・タッチセンサデバイスドライバをopenすると、open時にI/Oポートアドレスのチェックと登録を行う。 もしI/Oポートが使用中ならerrを返す。 ・第2引数のファイルの属性だが、このドライバはタッチセンサや赤外線センサの状態を読み込むだけで書き込むことは ないので、O_RDONLYにすることが望ましい。 ●read(fc, char *data,size_t count,loff_t offset) 第1引数:赤外線・タッチセンサドライバを指定 第2引数:各センサデータの格納領域 第3引数:センサデータのバイト数 第4引数:オフセット ・readメソッドは呼び出されると、タッチセンサ・赤外線センサの現在の状況をI/Oポートからint型で読み込む。read メソッドのデータ格納領域はchar型で定義されている(変更不可能)ので、読み込んだint型のデータをchar型データに 変換する。変換後、このchar型データをユーザ空間に書き込んでいる。 ・データは1:ONで0:OFFであり、また赤外線センサ・タッチセンサ・パワーオン信号の順に格納されている。(ゆえに アドレス+1するごとに赤外線センサ0・1・2…の状態が確認できる。もしくは配列(例えばchar dat[13])を用意してお き、この配列の先頭アドレスをポインタ変数に代入しておけば、dat[0]に赤外線センサ0の状態、dat[1]に赤外線セン サ1の状態というようにデータを格納することになり、後の処理がしやすくなる。) ・センサデータのバイト数は全部読み込んで13バイトである。(最大赤外線6個、タッチセンサ6個、パワーオン信号1個 なので。) ●ioctl(fc,int cmd_number,char *data) 第1引数:赤外線・タッチセンサドライバを指定 第2引数:コマンド選択値 第3引数:センサデータの格納領域 ・ioctl関数では第2引数の値によって選択したコマンドに対応して、タッチセンサ・赤外線センサ・パワーオン信号を それそれ分けてユーザ空間に書き込む。データは、readメソッドと同じくint型のデータを型変換してchar型データと なっている。コマンドは4つ用意している。詳しくは4-3.ioctlメソッドのコマンドで述べる。 ●close(fc) 第1引数:赤外線・タッチセンサドライバを指定 ・引数に赤外線・タッチセンサドライバファイルを指定すると、releaseメソッドがI/Oポートを開放してcloseする。
コマンド(cmd) |
コマンド値 |
最大読み込みバイト数 |
動作内容 |
IRS_READ |
0 |
6バイト |
赤外線センサのデータのみユーザ空間に読み込む。先頭アドレスには赤外線センサ0のデータが格納されている。そして、その次には赤外線センサ1のデータ、そのまた次は赤外線センサ2のデータ、というようにセンサデータが順に格納される(最大6個)。 |
TS_READ |
1 |
6バイト |
タッチセンサのデータのみユーザ空間に読み込む。先頭アドレスにはタッチセンサ0のデータが格納されている。そして、その次にはタッチセンサ1のデータ、そのまた次はタッチセンサ2のデータ、というようにセンサデータが順に格納される(最大6個)。 |
PO_READ |
2 |
1バイト |
パワーオン信号のみユーザ空間に読み込む。 |
IRS_TS_HARDRESET |
3 |
― |
ドライバ利用度数リセット用コマンド。このコマンドがあることにより、いざというときドライバをアンロードできる。 |
#define IRS_TS_IOC_MAGIC 'i' #define IRS_READ _IOR(IRS_TS_IOC_MAGIC, 0,setcode) #define TS_READ _IOR(IRS_TS_IOC_MAGIC, 1,setcode) #define PO_READ _IOR(IRS_TS_IOC_MAGIC, 2,setcode) #define IRS_TS_HARDRESET _IO(IRS_TS_IOC_MAGIC, 3) #define LCD_IOC_MAXNR 3
関連文書 |
---|