プライムモーション社のWindowsで手軽にリアルタイム制御環境「MOS Bench(モスベンチ)」で、CONTECのDIOカードPIO-16/16L(PCI)Hを制御した波形。5ms毎、LowとHighを繰り返している。
上段: リアルタイム制御の「MOS Bench(モスベンチ)」使用。
下段: 普通のWindows上で制御。
大きな違いがわかります。
■使用したプログラムの主要部
while(1){
if ( (b % 2) == 0 ) {
WritePort( 2126, 0 );
}
else {
WritePort( 2126, 1 );
}
b = b + 1;
Sleep(5);
}
■プログラムのしくみ
while(1){ }
このなかのプログラムが、ぐるぐる回って、実行されます。
うしろのほうに
Sleep(5);
と言う命令があります。
これは、5ms休むという命令です。したがって、ほぼ5msごと、
while(1){ }
の中のプログラムが実行されます。
うしろのほうの
b = b + 1;
は、変数bを1づつ、増やします。
つぎに、前のほうの
if ( (b % 2) == 0 ) {
と言う命令で、先ほどの変数bを2で割ったあまりが0かどうか判断しています。bが奇数か、偶数か、判断できます。あまりが0、つまり、bが偶数なら、次の命令
WritePort( 2126, 0 );
を実行します。すなわち、2126番のDOUTポートを0にします。
そうでないとき、すなわち、命令では
else {
のとき、
WritePort( 2126, 1 );
2126番のDOUTポートを1にします。
■使用したプログラムはこちら