番外編 - モバイルマウス ANYWHERE 2 VX1500

番外編
e-Gadget


お気に入りのマウスの話。

実は、ロジクールのマウスのファンです。特に無線の光学式はロジクールが良くて、パソコンの台数以上に色々と使っています。エレコムやワンワサプライなどに浮気したこともありますが、いつもガッカリさせられ、結局ロジクールに戻ってきます。

私は手が小さいので、モバイルマウスと称している小型なものが手に合います。なので昔からモバイルマウスばかり...


さて、5年くらい前から愛用しているのが M905 で、小型で高性能、ガラスの上でも使えてしまうのでとても重宝しています。内部は全く同じなのに価格を再設定するためだけに(と疑われる...)外観だけを変えて M905R や M905T と名前だけはバリエーションがあります。
M905 
Logicool ANYWHERE MOUSE M509T


性能は申し分ありませんが、クリックするとダブルクリックになったり2~3回クリックしたような症状(チャタリング)が、購入してから短くて数ヶ月、長くても1年で発生してしまうという、欠陥があります。これは、もう有名な欠陥で、"M905" と "チャタリング" で検索すると、いくらでも出てきます。

このマウスは3年保証で、保証期間内ならロジクールに連絡するとあっさりと無償交換してくれます。最近は、交換ではなくて新品を追加で送ってくれます(返送費用を節約するためでしょう...、それくらい頻発しているとも言えます)。今使っている M905T は、最初 M905R を買って6ヶ月でチャタリング発生のため M905T と無償交換しました。これが11ヶ月で再びチャタリング発生、今回は過去の交換履歴が記録に残っているため、電話一本で、交換でなくて新品を送るのみの対応となり、到着を待っているところです。最初の購入から2年程度なので、保証期間満了までまだ1年近くあります。

実は、初めて買った M905 も交換対応を経験していますが、3年の保証期間が過ぎて、わずか1週間程度で再びチャタリングが発生したものの、保証期間外のため無償対応は叶いませんでした。

この神対応のため、基本性能が良い M905 シリーズを使い続けています。

実は、もう一台 M905T を持っていて、丁度1年前に購入したものですが、チャタリング発生のため、交換対応の手続きに入ったところです。結局2台一式をまとめて対応してもらう事態になっています。

こんな神対応とはいえ、3年の保証期間が終われば神対応は受けられません。3年の保証期間内ギリギリで新品対応して貰ったとしても、その後数ヶ月、長くて1年程度しか使えないのは、やはりスイッチ部品に問題があると言わざるを得ません。

=====

2014年の春、Windows XP のサポート終了のため、Window 8 のノートPCとデスクトップを入手したのですが、そのノートPCには Bluetoothが使えます。USB が3ポート付いていますが、マウスでUSBを1つ使うと、ポートが足りなくなることがあり、また M905 を温存したいという気持ちもあって、この BLUETOOTH マウスを買って M905 と併用しています。これもロジクールです。

M557 

Logicool BLUETOOTH MOUSE M557


USBポートを塞がないのは良いとしても、7ボタンの M905 に慣れていると M557 の5ボタンはチョット不便に感じます。実は、サンワサプライの BLUETOOTHマウスを買ってみたのですが、性能が悪いのでほぼお蔵入りとなり、このロジクール品へ...やはり基本性能は不満を感じることが全くありません。

=====

上記の神対応をしながら、それでも発売を継続していた M905 ですが、スイッチ部品の耐久性が問題なのは明かで、短期間で必ずチャタリングが発生します。メーカーとしては、スイッチ部品を変更するか、スイッチを改善を含めた後継機種投入が本来の動きでしょうが、その動きが一向に見えませんでした。

やっと 2015年7月に、新製品 MX1500 が発表されました。スイッチの耐久性が M905 は 300万回だったのに対して、VX1500 は,オムロン製の 1000万回寿命(約3倍の寿命)のスイッチに変更されているとのこと。いよいよ、チャタリング対策をした M905 の後継機と考えて良いでしょう。

切実な問題として、2台ある M905 が使い物にならないので、交換対応までも待てず...、アマゾンでポチッとしたら、翌日には届いていました。
MX1500 
Logicool MX ANYWHERE 2 - MX1500

外箱はこんな感じで、ハードカバーの表紙をめくるとマウスが拝める梱包です。

MX1500_2 MX1500_3 

ふと気になったのは、この表紙が磁石でくっつくことなんですね。

で、外装から取り出すと、右に丸い磁石が付いているではありませんか....

MX1500_1 

なんとも無駄な包装だと思うのは、私だけでしょうか?
それとも、この製品にかなりの気合いが入っているのでしょうか?

実際に使ってみると、M905 と同じ7ボタンで、サイズも重さも、使用感も性能も M905 とほぼ同じ。カタログ上は解像度が少し向上しているようですが、それが分かるような使い方をしていないので、後継機種としては申し分ありません。

さらに、このマウスは従来のUSBを使った無線に加えて BLUETOOTH 接続も出来て、3つの接続プリセットができるのが新機軸です。
マウス1台でPC3台以上にプリセット対応できるのは面白いです。

そして、なによりも Windows 8.1 のノートPCで使っている BLUETOOTHマウス M557 の代わりに、BLUETOOTH接続でありながら M905 の7ボタンの機能を使えるのが有り難い。

M905 が単三電池1~2本で動作したのに比べて、MX1500 は充電池式。USBケーブルで充電するのですが、電池が空になって1分充電で1時間動作程度までになるらしいので、それなら問題なさそうです。実際はこれから試す予定ですが、自分の使い方のパターンから電池持ちが事前に分かるので、定期的に充電すれば問題ないですね。スマホや携帯も定期的に充電しているのだから、マウスが1つ増えたってとくに困りません。

しばらくは、チャタリング問題が解決されているかどうか楽しみにして、MX1500 を使い倒してみることでしょう。



最後に、今回紹介できなかったお気に入りのマウス;

V500 
Logicool V500 Cordless Optical Notebook Mouse (2台あったりします)
スライドパッド風のスクロール&チルト機構が面白い。4年使っても、チャタリングが発生していない。


V320 
Logicool V320 Cordless Optical Mouse for Notebook
オーソドックスな作り、3年程度でチャタリング発生。
中グレード品だけあって、VX1500、M905、VX Nano ほどホイール動作やポインティングがかちっと決まらない。
これを使った経験から、価格が張っても上級グレードを使うようになった。



VX_Nano 
Logicool VX Nano Cordless Laser Mouse for Notebook
非常に完成度の高いモバイルマウスで、3年以上使ってもチャタリングが発生していない。




応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ


 


keywords: Windows8.1マウス、ロジクール

リンク集 | ブログ内マップ
関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

fx-9860GII 高速化 - Ftune2 の導入

2015/11/08

fx-9860GII を高速化するアドインプログラム Ftune2 については、既に紹介しています。
fx-9860GII のオーバークロック - Ftune2 -

今回は、Ftune2 の導入を、簡単に説明してみます。


fx-9860GIIはじめに

カシオのグラフ関数電卓 fx-9860GII は、fx-5800P で動作する Casio Basic プログラムの移植性が高く、ともに構造化プログラミングが可能な新世代Casio Basic を搭載しています。但し同じ Casio Basic プログラムは fx-9860GII の方が fx-5800P よりもかなり高速に動作します。


fx-9860GII と fx-5800P

fx-5800P は Casio Basic 入門機と言えますが、fx-9860GII は 1段アップグレードした Casio Basic 開発環境で、さらにアドインプログラムが使えます。なお、fx-FD10 Pro は fx-9860GII のハードウェアに近いのですが、Casio Basic 専用プラットフォームの位置づけで、 アドイン機能は使えません。


fx-9860GII のアドイン機能

アドイン機能は電卓に新たなプログラムを導入して使うものです。但し、Casio Basic でアドインプログラムを作る環境はカシオにより準備されていませんし、世界中の Casio Fan による多くの作品の中にも、今のところ Casio Basic でアドインを作る開発環境は発表されていないようです。

アドインを作るには、C言語でのプログラミングが必要で、カシオが fx-9860G 用に開発したものをベースに fx-9860FII 用にも提供している SDK が最有力開発環境です。世界中の Casio Fan によりアドイン作成用のライブラリの提供や、CPUベースの深い情報が発信されています。 


Casio Basic と C言語

アドインプログラムはC言語で開発するので、Casio Basic より10倍程度高速動作し、Casio Basic で出来ないことができます。例えばファンクションキーを使ったメニュー表示は、SDK を使ったアドインならではのもので、これを Casio Basic で実現するのは出来ないとは言えませんが(Pict コマンドを使うなど)、あまり現実的ではありません。アドイン作成は、C言語でのプログラミングが必要なので、ハードルが高いと言えます。

一方で、Casio Basic は、既に当ブログで紹介しているように、敷居が低く生産性の高い開発言語です。電卓ならではのプログラムを簡単に作れるのが、新世代 Casio Basic の最大の存在価値です。例えば、fx-FD10 Pro に搭載されている土木・測量向けのプログラムは Casio Basic で書かれていますし、当ブログで紹介して内容を使えば、それらのプログラムをより使いやすくアップグレードすることも可能です。

高速動作させたいなら、C言語でアドインプログラムを作るのが確実です。


Casio Basic プログラムの高速化

Casio Basic プログラムを速く動作させるには、ロジックの見直しなどを最初に考えるべきですが、それも限度があります。手っ取り早く高速化するには、そもそも電卓の動作速度を向上すれば良いわけです。そこで役立つのが、 fx-9860GII の処理速度を大幅に向上させる、Ftune 2 というプログラムです。これはアドインプログラムです。

Ftune2 は、当ブログの読者のお一人 sentaro様の作品です。fx-9860GII のCPUは、実際の能力よりもかなり低い状態で使われていて、実際の能力を引き出すことで処理速度を高速化するのが、このアドインの仕事です。

Ftune シリーズは、以下のカシオのグラフ関数電卓に対応しています。
  • Ftune: fx-9860G、fx-9860GII USB POWER GRAPHIC (いずれもCPUに SH3 を使った製品)
  • Ftune2: fx-9860GII USB POWER GRAPHIC 2 (fx-9860GII はマイナーアップデートしている)
  • Ptune2: fx-CG20、fx-CG10 Prizm (アメリカ専用モデル)
fx-9860GII は、発売当初は CPU に SH3 を使っていたのですが、マイナーアップデートして SH4 搭載機に変わっています。これらのマイナーバージョンの一番簡単な見分け方は、液晶パネルの下に印字されている USB POWER GRAPHC 2 か、USB POWER GRAPHIC かの違いです。末尾に 2 が付いていないものが、初期モデルの SH3 搭載機、2 が付いているのが後期モデルの SH4 搭載機です。

国内で店頭で売られているのは後期モデルですが、購入前には確認されると良いでしょう。ネット販売や並行輸入品購入の場合は、特に注意が必要かも知れません。

これらの中で最も高速化できるのが、fx-9860GII 後期モデルで、オリジナルの10倍以上の高速化が可能になります。計算量の多いプログラムやグラフィックスプログラムの実行に、このアドインの最大のメリットがあります。


Ftune2 利用の前に

オーバークロックを行う場合の注意事項があります。詳しくは下記記事の オーバークロックとはどのようなものか? を必ずお読み下さい。簡単に言えば、メーカー保証外の使用方法なので、オーバークロックに起因する不具合は保証対象外になります。
fx-9860GII のオーバークロック - Ftune2 -


それでも Ftune2 を紹介する理由

Ftune2 は、海外でも取り上げられており、世界で愛好者が増えています。
その最大の理由が、できるだけ安全に利用できる配慮がされていることです。そして、これまで作者の sentaro様との11ヶ月間以上のやりとりから、プログラミングスキルと、プログラム作成に関する考え方、プログラミングへの取り組む姿勢、そしてお人柄が分かるにつれ、このアドインの安全性への配慮には疑いがないと考えています。

sentaro様の発言は、当ブログ、高機能電卓の情報、Universal Casio Forum 、CEMETECH、に残っていますので、気になる方はじっくりとお読みください(Universal Casio Forum や CEMETEC では sentaro21 というハンドルネームをお使いです)。

オーバークロックには避けられないリスクがあるわけですが、それでも Ftune2 を改めて紹介するのは、この作者個人への信頼性が最大の理由です。言い換えれば、Ftune2 のリスクは、アドイン自体にはほぼないと言わせて頂きます。リスクがあるとすれば、入手した電卓個体によるもの、要は当たり外れです。、

私自身、Ftune2 を使い始めたのが 2014年12月で、これを書いている時点で11ヶ月の利用になりますが、オーバークロックによる致命的なトラブルはありません。仮に電卓の動作がおかしくなっても、リスタートさせれば元に戻ります。そこで、遅ればせながら改めて Ftune2 利用の手引きを書くことにしました。

長々と前置きを書いたのも、このアドインの性格を正しく理解して、正しく使って頂きたいからです。


Ftune2 を使ってみよう

先ずは、電卓に保存されているデータやプログラムを全てバックアップしておき、電卓をリスタートしたり工場出荷状態にリセットした後に、データやプログラムを元に戻せるように準備することが最も重要です。
  1. FA-124 のインストール: PCと fx-9860GII のリンクソフト "PROGRAM-LINK FA-124 Ver 2.04 を fx-9860GII 添付のアプリケーションCDからインストールします。インストール時に日本語を選択すると FA-124 の日本語マニュアルもインストールされます。
  2. FA-124のマニュアルを表示: FA-124 のメニュー [Help] - [Manual] から表示します。
  3. データのバックアップ: FA-124 を使って、fx-9860GII のメインメモリ保存メモリの両方のバックアップをPCに保存します。FA-124 のマニュアルにある「3. fx-9860Gシリーズ/fx-9750GII/fx-7400FIIとパソコンとのデータ転送」を参照し、先ずメインメモリの内容を表示してから、青い右矢印のアイコンをクリックしてメインメモリをバックアップ。次に保存メモリの内容を表示してから、青い右矢印のアイコンをクリックして保存メモリをバックアップします。なお Selected items are invalid というエラーメッセージが表示されることがあるようですが、特に問題はなさそうです。
  4. ダウンロードFtune2 のサイトから、Ftune2 をダウンロードします。間違って FtunePtune2 をダウンロードしないように!
  5. インストール: FA-124 のマニュアルにある「10. アドインのインストール」に従って、Ftune2 をインストールします。
  6. MAIN MENU: fx-9860GII で [MENU] キーをクリックして MAIN MENU 画面を表示します。
  7. Ftune2 起動: MAIN MENU 画面で、ftune のアイコンを選んで Ftune2 を起動します。
  8. メモリチェック: 始めて起動すると自動的にメモリチェックが始まります。安全対策の1つです。
  9. ノーマルクロック: ノーマルクロックが 29.49MHz と表示されます。
  10. オーバークロック:  [F5] キーを押すと 235.93MHz と表示されます。これでオーバークロック終了です。
  11. MAIN MENU[MENU] キーを押して MAIN MENU に戻ります。
しばらくプログラムを走らせてみたり、その他の電卓の機能を使ってみて、画面表示や、キーの応答性などに異常が無いことを確認します。


さらに高速化してみる
私の事例では、現在使用している fx-9860GII は、オーバークロックで 280MHz で動作させています。機種個別に注目点が異なりますので、さらに高速化したい場合の疑問点については、コメント欄でご質問ください。
作者の sentaro様からの回答が貰えるかも知れません。


基本的な考え方は、安全動作できる最高クロックより1段低いところで使うことです。

私の使用機では、287.54MHz で動作するので、一段低い280.17MHz で使うようにしています。
具体的には、Ftune2 を起動して、[SHIFT] [MENU] で出てくる 安全設定メニューで、以下のようになっています。

ROM margin: 3%
RAM margin: 3%
PLL CLK Max: 800.00MHz
CPU CLK max: 287.00MHz
Shw CLK Max: 180.00MHz
Bus CLK Max: 180.00MHz
I/O CLK Max: 40.00MHz
Start MemCK: on
F1 Yes/No: off
Wait Auto -: on
RAM WW Auto: on
ROM IWW At-: on
PFC Auto Up: on
FLL Diso: on
Batt Disp: on

主に、下線の値を変更します。
この設定は、これ以上の厳しい設定が出来なくするためのもので、Ftune2 の安全対策の1つです。
[EXIT] キーを押してメイン画面に戻ってから、[F1] キーでこの設定を保存しておきます。
そして、メイン画面でまず [F5] キーで 235.93MHz にしてから、右矢印キーを押してクロックを上げて行きます。そしてこの設定以上の値にはできないようになっています。

電卓個体によって、設定は変わってきますので、デフォルトの [F5] (235.93MHz) より高いクロックに設定する際は、注意が必要です。
何かおかしくなって、リスタートして元に戻るのなら、多くの場合大丈夫のようです。

デフォルトの [F5] の 235.93MHz で使えばかなり安心できますので、先ずはここから高速化の世界を体験してみてください。



アマループ

オーバークロックは電力消費が激しいので、集中的に使えば2~3日で LOW BATTERY になってしまいます。そこで、ニッケル水素充電池をお勧めします。初期は乾電池よりも電圧が高いのがニッケル水素電池ですが、fx-9860GII では問題なく使えます。

私は、Amazonブランドのエネループ(アマループ(^^;)を愛用しています。富士通グループのFDK株式会社製で、性能は三洋電機が以前製造していたエネループと同等です。三洋電機から正式に製造移管(売却)されて製造していますので、三洋電機製と同等の性能や品質なので、安心しています。特に最新の最高性能である必要もなく、とにかく安い(Panasonic製の半値近い)アマループが気に入っています。

エネループはニッケル水素電池の一種ですが、お勧めの記事;
エネループを購入するときに候補にしたいアマゾン版エネループ、通称『アマループ』ができるヤツ。
アマゾンのエネループ、通称アマループを買ってみた

さらに、詳しく興味があれば以下が面白いです;
第10回:ニッケル水素電池はどれを使えば良い?国内メーカーガチンコ対決!【前編】


アマゾンでは、本日時点で、単四8本パックで、¥1,380 と、市販のエネループの半額近くなっています。
⇒ Amazonベーシック 充電式ニッケル水素電池 単4形8個パック (最小容量750mAh、約1000回使用可能)

私は、充電した4本を常に準備しています。海外出張などでは、8本を持ち歩きます。
1000回充電可能と謳っていますが、経験的には300回程度で充電容量が低下しますが、300回ということは1年以上使える計算で、それが690円(4本分)なので、これで十分でしょう。


保管や持ち歩き用の電池ケースは以下を使っています。
★クリア★単3形&単4形電池兼用電池ケース。単3、単4兼用!収納保管ケースエネループ・エネロング等の充電池の保管に最適!単3形電池なら4本まで単4電池なら5本まで収納可能パーテーション(間仕切り)で電池を固定!

1個99円ですが、配送料が82円かかるので、4つほどまとめて購入しています。このケースは繋げて使えるので便利です。


充電器は、4本同時に充電できて、1本づつ充電状態を制御&表示できる機能のあるものを強く勧めます。私は既に持っていた Panasonic のENELOOP PRO 用の、単三/単四向け充電器を使っています。これで、アマループを含めた全てのニッケル水素充電池に対応するので、敢えてグレードの高いものを購入しました。出張時には持って行きます。



応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ


 



keywords: fx-9860GIICasioBasic

リンク集 | ブログ内マップ






関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

Caso Basic入門G14

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

2015/11/03
修正 2016/11/03

 5. Casio Basic でグラフィックス

前回: Casio Basic入門G13

Chapter G14
PxlTest コマンド


前回 ViewWindow による座標系設定で動作確認した以下のグラフィックス描画を行うコマンドは、[SHIFT] [F4] (Sketch) に続くメニューの中にあり、これらをSketch描画コマンドと呼ぶことにします。
  • Plot
  • PlotOn
  • PlotOff
  • PlotChg
  • Line
  • F-Line
  • Circle
  • Vertical
  • Horizontal
  • Text
  • PxlOn
  • PxlOff
  • PxlChg
  • PxlTest( )
今回は、PxlTest() について、詳細動作を調べます。


PxlTest( ) コマンド

fx-9860GII Ver 2.04 のソフトウェアマニュアル の 8-24 ページには、以下の PxlTest( ) コマンドの説明があります。

PxlTest(<行番号>,<列番号>[)]

説明はこれだけです。

何をするコマンドか分かりません。行番号は縦方向、列番号は横方向ですが、これだけでは、原点がどこにあるか分かりません。

PxlTest() コマンドは、物理座標系で位置を設定し、その位置のピクセルが On なら 1 を返し、Off なら 0 を返します。値を返すとは、PxlTest() がその値を持つと考えて良いでしょう。
座標系とピクセル位置2 
原点は、左上で (1, 1) です。このコマンドを記述すると、例えば、

PxlTest(x,y)

となり、x は縦方向、 y は横方向の位置です。

殆どのコマンドでは、x を横方向の座標値、y を縦方向の座標値にするので、違和感があり、要注意です。多くのコマンドでは 横方向の座標置が1つめのパラメータに来るのですが、PxlTest() の1つめのパラメータは縦方向の座標置であり、2つめのパラメータが横方向の座標置なので、違和感があります。仕様なので、しかたありません。

Casio Basic の物理座標系で使うコマンドは全てこのように、縦と横が逆転します。

物理座標系で位置を設定するコマンドは、PxlTest() 以外も全てこのようになります。既に使ってきている Text コマンドも同様です。

さて実際に

PxlTest(X,Y) 

と、1行だけのプログラムを書いて、実行するとエラーになります。

PxlTest( の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F4] (Test)

Argument_ERROR  

変数 Y に 1 ~ 63 以外の整数、変数 X に 1 ~ 127 以外の整数が格納されていると、Argument ERROR となります。
PxlTest() を使う際には、変数 X と Y の初期値に留意する必要があり、必要に応じてエラーが出ないように初期化する必要があります。


PxlTest() コマンドを使う時、変数 XY は、描画した点の位置をデフォルトの論理座標系に換算した座標 (X, Y) の値に自動的に更新されることが確認できます。

例えは、PxlTest(A,B) を実行すると、物理座標系での点(B, A) のピクセルが On か Off をを調べ 、この位置がデフォルトの論理座標系へ変換された座標 (X, Y) へ自動計算され、X と Y がその値で自動的に更新されるわけです。そして、変数 X と Y は使う際には要注意の予約変数とになります。バグ回避のために使わないほうが無難かも知れません。

PxlTest() の動作を確認するため、以下のように点線を3本描いて、ピクセルが交互に On と Off になる状態を作り、それぞれのピクセル位置で PxlTest() を実行して、ピクセルが On なら PxlOff でピクセルを消し、Off なら PxlOn でピクセルを描くようにしてみます。動作の結果は PxlChg と同じになるはずです。

PxlChg_2 

この準備には、PxlOn を使うことにします。PxlChg の動作確認で全く同じ準備をしています。
Casio Basic入門G13 - PxlChg コマンド

ClrGraph
CoordOff
GridOff
AxesOff
LabelOff

Text 1,1,"PxlOn"
For 31→A To 33
For 1→B To 127
MOD(A+B,2)⇒PxlOn A,B
Next
Next


ここで MOD 関数は A+B を 2 で割った時の余りが 1 の時のみ PxlOn A,B を実行するように使います。こうすることで、交互にピクセルを On にできます。

F-Line コマンドを使ってピクセルを交互に On にする方法は、以下で紹介しています。
Casio Basic入門G07

この方法でも良いのですが、今回は別の方法を紹介しました。

For 文が2重になっていますが、内側のFor 文では、A 行を左から右へ (B が 1 から 127 まで) 交互に点を描いています。外側は、A 行の A を 31 から 33 まで順に変化させています。
先ず、A が 31 になって、内側の For 文(内側の For と Next の間) が B が 1 から 127 になるまで、B の値を 1 づつ増やしながら繰り返します。内側の For 文が終わったら、外側の For 文で A を 1 増やして (A=32)、もう一度内側の For 文が繰り返しを行い、これが終わったら再度外側の For 文で A を 1 増やして (A=33) さらに内側の For 文が同じように繰り返しを行います。これが終わって外側の For 文に戻るわけですが、A が 33 まで繰り返すように書いてあるので、これ以上の繰り返しを行わずに、外側の Next へジャンプし、プログラムが終わります。

Casio Basicコマンドリファレンス: For 文



これで、準備が終わったので、PxlTest() の動作を確認するために以下のプログラムに仕上げます。

ファイル名: PXLTEST1
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff

Text 1,1,"PxlOn"
For 31→A To 33
For 1→B To 127
MOD(A+B,2)⇒PxlOn A,B
Next
Next

Text 1,1,"PxlTest()=1 =⇒ PxlOff"
Text 7,1,"PxlTest()=0 =⇒ PxlOn"
Text 13,1,"X="
Text 19,1,"Y="
Text 45,1,"Hit Any Key: Do PxlTest()"

0→X:0→Y
For 31→A To 33
For 1→B To 127
If PxlTest(A,B)
Then PxlOff A,B
Else PxlOn A,B
IfEnd
Text 13,10,X
Text 19,10,Y

While Getkey=0
WhileEnd

Text 13,10,"  " (スペース4個)
Text 19,10,"  " (スペース4個)
Next
Next 

ダウンロード: PXLTEST1 


青文字で示した2行の While ループは、何かキーが入力されるまでプログラムを一旦停止する働きをします。
よく使う方法なので、逆引き Casio Basic にも掲載しました。
キー押下でプログラムをコントロールしたい - 逆引き Casio Basic

プログラムを一旦停止するには、 命令を使う方法もあり、これは簡単な方法です。一旦停止を解除するには [EXE] キーを押します。但し、今回のプログラムでは、プログラムを進めるには [EXE} キーを連打し続ける必要があり大変です。一方、上の方法だと 何かキー([AC] キー以外)を押し続けるだけでプログラムは進むので格段に操作が楽になるので、この方法を紹介しています。

For 文については、準備で PxlOn による点描画を行ったのと全く同じなので、ここでは割愛します。


赤文字で示したこのプログラムの肝心な部分では、PxlTest() を実行し、1 を返す(PxlTest() の値が 1)の時、If 文で分岐して PxlOff を実行し、そうでない(PxlTest() が 0を返す場合は、PxlOff を実行します。その後に 変数 X と Y の値を確認しています。

PxlTest(A,B) が物理座標のピクセル(A, B) の On か Off かを調べると同時に、この物理座標をデフォルトの論理座標系に変換した座標 (X, Y) を、変数 X と Y に自動的に代入します。つまり、物理座標系の (A, B) がデフォルトの論理座標系の (X, Y) に自動変換されるわけです。

座標系とピクセル位置4 

では、プログラムを実行してみます。

このプログラムを起動すると、先ずは PxlOn でピクセルが交互に On になるように点線を3行描画します。

PxlChg_1 


これは2行目を描画しているところです。描画は続きます。

PxlChg_2 

3行目の描画がほぼ終わったところです。3行の範囲でピクセルが交互に On になっているのが分かります。

準備が完全に終わると、以下の表示でプログラムが一旦停止します。

PxlTest1_3 

1行目の左端は、既に PxlTest() で Off だったピクセルが On になっているのがわかります。上のプログラムでは、PxlTest() を1回実行して、0 を返して PxlOn を実行した直後、プログラムが While ループに入って、それが回り続けるため、そこから先へプログラムが進みません(止まっているように見えます)。

では、何かキー(但し [AC] キー以外)を短く押すと PxlTest() が1回づつ実行され、同時に X と Y の値が表示されます。

1行目の中央まで進んだところが下の画面です。

PxlTest1_4 

交互に On になっていたピクセルの On と Off が切り替わっていることが一目瞭然です。そして、X=0、Y=0.1 となっていて、デフォルトの論理座標系での値になっていることが確認できます。

座標系とピクセル位置4 

さらに、何かキーを押します。押し続けるとプログラムは進むので、しばらく押し続けてみてください。

PxlTest1_5 

3行目まで進みました。X と Y の値もデフォルトの論理座標系に従っていることが分かります。

PxlTest1_6 

3行目の右端のピクセルで PxlTest() が実行され、そのときの X と Y の値が表示されたところです。


このプログラムを実行することで、PxlTest(A,B) では、パラメータに物理座標系の位置を示す A と B を使っていますが、Xデフォルトの論理座標系での座標値 (X, Y) の値が自動的に更新されることが確認できました。

PxlTest() を使う時は、変数 X と Y の値が勝手に変更されることに留意し、プログラムを書く必要があります。

ピクセルの On / Off を調べるコマンドは、物理座標系で使う PxlTest() しかありません。従って、ピクセルの On / Off を調べたい時は、物理座標系からデフォルトの論理座標系への自動変換をする機能を正しく理解して、利用する必要があります。



次に、PxlTest() は、ピクセルの On / Off を調べた結果、1 か 0 の値を返すことを確認してみる。値を返すというのは、そのコマンドがその値を持つと考えても良いでしょう。

この機能を確かめるために、次のようなプログラムを作ってみます。

ファイル名: PXLTEST2
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff

SketchDot Horizontal 0
Text 1,1,"PxlTest()="
Text 45,1,"EXE: Check next value."

32→A
For 1→B To 127
B-1⇒PxlOff 34,B-1
PxlOn 34,B
Text 1,45,PxlTest(A,B)◢
Next


ダウンロード: PXLTEST2


このプログラムの1つ目のブロックはフラフィックス設定で、特に説明は不要でしょう。

2つ目のブロックで、水平の点線を描いて、画面への文字表示を行っています。
SketchDotHiorizontal コマンドの使い方は、以下を参照。
Casio Basic入門G07

3つ目のブロックが、今回の確認のための主要部分です。既に描かれた点線を左から1ピクセルごとに PxlTest(A,B) でピクセルの On/Off をテストします。Text コマンドの3つ目のパラメータに、直接 PxlTest(A,B) を記述しています。PxlTest() が値を返すので、このような記述が可能になります。

Text 1,45,PxlTest(A,B)◢

これを表示したら、一旦停止させるため、 命令を使っています。
点線の水平線は、物理座標系で上から32ピクセルにあるので、A は常に 32 です。従って、32→A としています。
横方向は、変数 B を 1 から 127 まで1づつ増やして、For 文で繰り返し処理を行っています。
つまり、上の Text コマンドの3つめのパラメータの PxlTest(A,B) は、PxlTest(32,B) と全く同じです。

ところで、赤文字出示した2行は、今どのピクセルをテストしているのかを示すために追加しています。
今テストしているピクセル (32, B) の2ピクセル下に、点を描画するので、

PxlOn 34,B

となります。

但し、この点を描画する前に、1つ前の点を PxlOff で消します。

PxlOff 34,B-1

と書けば良いのですが、1つ問題があります。

一番最初は、B が 1 です。この時 B-1 は 0 になります。すると、PxlOff 34,B-1 の2つめのパラメータが 0 になりますが、PxlOff の仕様上、パラメータが 1 ~ 127 以外だとエラーになります。そこで、最初だけは PxlOff を実行させないため、

B-1⇒PxlOff 34,B-1

としています。

B-1 が 0 以外なら「真」なので、⇒ 命令の右を実行します。
一番最初は、B = 1 なので、B-1 は 0 となり「偽」となるので、⇒命令は、すぐ次のコマンドを実行せず飛ばします。

Casio Basic コマンドリファレンス: ⇒命令


従って、

B-1⇒PxlOff 34,B-1
PxlOn 34,B
Text 1,45,PxlTest(A,B)◢


となります。

では、このプログラムを実行してみます。


プログラムを起動すると、

PxlTest2_1 

点線の水平線が描画され、1つめのピクセルがテストされ、テスト結果が 1 と表示されています (PxlTest()= 1 と表示)。テストしている一番左のピクセルの下に、点が1個表示されていることも確認できます。

[EXE] を何回か押すと、

PxlTest2_2 

今テストしているピクセルは、Off になっていて、テスト結果は、0 になっています。

[EXE] を1回押すと、

PxlTest2_3 

点は1ピクセル右へ移動してテストしているピクセルを示し、それは On になっていて、テスト結果も 1 (Pxltest() =  1) になっています。

さらに、[EXE] を何回か押して、

PxlTest2_4 

ピクセルが Off のところのテスト結果は、0 になっています。

[EXE] を1回押して、テストするピクセルを1つ右へ移動すると、

PxlTest2_5 

ピクセルが On になっていて、テスト結果が 1 になっています。

これで、PxlTest() は、ピクセルのテスト結果を 1 か 0 で示す、その値を返すことが確認されました。この「値を返す」機能を使えば、PxlTest() コマンドを変数のように使えることも分かりました。



PxlTest( )

書式PxlTest(A,B)
  • パラメータ A と B で指定された位置のピクセルが On か Off かをテストする。
  • パラメータ A と B は、物理座標系でのピクセルの位置を示す。変数 X と Y を使う時は、その値に留意する。
  • このコマンドが実行されると、消去した点の物理座標系での位置をデフォルトの論理座標系での座標 (X, Y) に換算し、その座標値が変数 X と Y に自動的に代入・更新される。
  • A には、1 から 63 までの整数値を用い、それ以外の値を設定すると Argument ERROR になる。
  • B には、1 から 127 までの整数値を用い、それ以外の値を設定すると、Argument ERROR になる。

PxlTest( の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F4] (Test)





今回のまとめ
  • PxlTest(A,B) は、物理座標系で位置を設定し、その位置のピクセルの On / Off を調べ、On なら 1 を Off なら 0 を返す。
  • A = 1 ~ 63、B = 1 ~ 127 の整数値に限定去れ、それ以外を設定すると Argument ERROR になる。
  • PxlTest() のパラメータに、変数 X と Y を使う時は、その値に留意する。
  • 変数 X と Y は、描画した点をデフォルト論理座標系に変換した座標値 (X, Y) が自動的に代入・更新される。PxlTest() コマンド使用時には、変数 X と Y の利用には注意が必要である。


今回使ったグラフィックス コマンド

  • PxlTest()



つづく...

⇒ Casio Basic入門 G13 / 目次




応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ


 



keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ



関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

Casio Basic入門G13

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

修正 2015/11/03

 5. Casio Basic でグラフィックス

前回: Casio Basic入門G12

Chapter G13
PxlChg コマンド


前回 ViewWindow による座標系設定で動作確認した以下のグラフィックス描画を行うコマンドは、[SHIFT] [F4] (Sketch) に続くメニューの中にあり、これらをSketch描画コマンドと呼ぶことにします。
  • Plot
  • PlotOn
  • PlotOff
  • PlotChg
  • Line
  • F-Line
  • Circle
  • Vertical
  • Horizontal
  • Text
  • PxlOn
  • PxlOff
  • PxlChg
  • PxlTest( )
今回は、PxlChg について、詳細動作を調べます。


PxlChg コマンド

fx-9860GII Ver 2.04 のソフトウェアマニュアル の 8-24 ページには、以下の PxlCgf コマンドの説明があります。

PxlChg <行番号>,<列番号>

説明はこれだけです。

ここで、行番号は縦方向、列番号は横方向です。これだけでは、原点がどこにあるか分かりません。

PxlChg コマンドは、物理座標系で位置を設定し、その位置のピクセルが On なら Off に、Off なら On に切り替えます。
座標系とピクセル位置2 
原点は、左上で (1, 1) です。このコマンドを記述すると、例えば、

PxlChg y,x

となり、y は縦方向、 x は横方向の位置です。

通常、x を横方向の座標値、y を縦方向の座標値にするので、このようにしてみました。多くのコマンドでは 横方向 (x) が1つめのパラメータに来るのですが、PxlChg の1つめのパラメータは縦方向の y であり、2つめのパラメータが横方向の x で、違和感があります。仕様なので、しかたありません。

物理座標系で位置を設定するコマンドは、PxlChg 以外も全てこのようになります。既に使ってきている Text コマンドも同様です。

さて実際に

PxlChg Y,X 

と、1行だけのプログラムを書いて、実行するとエラーになります。

PxlChg の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F3] (Chg)

Argument_ERROR  

[2015/10/28] 訂正
変数 Y に 1 ~ 63 以外の整数、変数 X に 1 ~ 127 以外の整数が格納されていると、Argument ERROR となります。
PxlTest() を使う際には、変数 X と Y の初期値に留意する必要があり、必要に応じてエラーが出ないように初期化する必要があります。
===== 訂正ここまで =====

PxlChg コマンドを使う時、変数 XY は、描画した点の位置をデフォルトの論理座標系に換算した座標 (X, Y) の値に自動的に更新されることが確認できます。

例えは、PxlOff A,B を実行すると、物理座標系での点(B, A) を描画し、この点の位置がデフォルトの論理座標系へ変換された座標 (X, Y) へ自動計算され、X と Y がその値で自動的に更新されるわけです。そして、変数 X と Y は使う際には要注意となる予約変数です。変数 X と Y は使ってはいけないと解説している海外の個人ホームページがありますが、この仕様を理解して使うのは問題ありません。使わない方が妙なバグにならず確実だとは言えます。

PxlChg の動作を確認するため、以下のように点線を3本描いて、ピクセルが交互に On と Off になる状態を作り、それぞれのピクセル位置で PxlChg を実行して、ピクセルの On と Off が逆転することを確認します。

PxlChg_2 

この準備には、PxlOn を使うことにします。

ClrGraph
CoordOff
GridOff
AxesOff
LabelOff

Text 1,1,"PxlOn"
For 31→A To 33
For 1→B To 127
MOD(A+B,2)⇒PxlOn A,B
Next
Next


ここで MOD 関数は A+B を 2 で割った時の余りが 1 の時のみ PxlOn A,B を実行するように使います。こうすることで、交互にピクセルを On にできます。

F-Line コマンドを使ってピクセルを交互に On にする方法は、以下で紹介しています。
Casio Basic入門G07

この方法でも良いのですが、今回は別の方法を紹介しました。

For 文が2重になっていますが、内側のFor 文では、A 行を左から右へ (B が 1 から 127 まで) 交互に点を描いています。外側は、A 行の A を 31 から 33 まで順に変化させています。
先ず、A が 31 になって、内側の For 文(内側の For と Next の間) が B が 1 から 127 になるまで、B の値を 1 づつ増やしながら繰り返します。内側の For 文が終わったら、外側の For 文で A を 1 増やして (A=32)、もう一度内側の For 文が繰り返しを行い、これが終わったら再度外側の For 文で A を 1 増やして (A=33) さらに内側の For 文が同じように繰り返しを行います。これが終わって外側の For 文に戻るわけですが、A が 33 まで繰り返すように書いてあるので、これ以上の繰り返しを行わずに、外側の Next へジャンプし、プログラムが終わります。

Casio Basicコマンドリファレンス: For 文



これで、準備が終わったので、PxlChg の動作を確認するために以下のプログラムに仕上げます。

ファイル名: PXLCHG1
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff

Text 1,1,"PxlOn"
For 31→A To 33
For 1→B To 127
MOD(A+B,2)⇒PxlOn A,B
Next
Next

Text 1,1,"PxlChg"
Text 7,1,"X="
Text 13,1,"Y="
Text 45,1,"Hit Any Key: Do PxlChg"

0→X:0→Y
For 31→A To 33
For 1→B To 127
PxlChg A,B
Text 7,10,X
Text 13,10,Y

While Getley=0
WhileEnd

Text 7,10,"  " (スペース4個)
Text 13,10,"  " (スペース4個)
Next
Next 

ダウンロード: PXLCHG1 


青文字で示した2行の While ループは、何かキーが入力されるまでプログラムを一旦停止する働きをします。
よく使う方法なので、逆引き Casio Basic にも掲載しました。
キー押下でプログラムをコントロールしたい - 逆引き Casio Basic

プログラムを一旦停止するには、 命令を使う方法もあり、これは簡単な方法です。一旦停止を解除するには [EXE] キーを押します。但し、今回のプログラムでは、プログラムを進めるには [EXE} キーを連打し続ける必要があり大変です。一方、上の方法だと 何かキー([AC] キー以外)を押し続けるだけでプログラムは進むので格段に操作が楽になるので、この方法を紹介しています。

For 文については、準備で PxlOn による点描画を行ったのと全く同じなので、ここでは割愛します。


赤文字で示したこのプログラムの肝心な部分では、PxlChg を実行し、その後に 変数 X と Y の値を確認しています。
X と Y は、PxlChg が On と Off を切り替えたピクセルの座標を示しますが、デフォルトの論理座標系での座標値を示します。
PxlChg A,B で示しているピクセルの位置 (A, B) は物理座標系での位置を示しますが、X と Y はその座標をデフォルトの論理座標系に変換した (X, Y) になっているわけです。

座標系とピクセル位置4 

では、プログラムを実行してみます。

このプログラムを起動すると、先ずは PxlOn でピクセルが交互に On になるように点線を3行描画します。

PxlChg_1 


これは2行目を描画しているところです。描画は続きます。

PxlChg_2 

3行目の描画がほぼ終わったところです。3行の範囲でピクセルが交互に On になっているのが分かります。

準備が完全に終わると、以下の表示でプログラムが一旦停止します。

PxlChg_3 


1行目の左端は、既に PxlChg で Off だったピクセルが On になっているのがわかります。上のプログラムでは、PxlChg を1回実行した直後、プログラムが While ループに入って、それが回り続けるため、そこから先へプログラムが進みません(止まっているように見えます)。

では、何かキー(但し [AC] キー以外)を短く押すと PxlChg が1回づつ実行され、同時に X と Y の値が表示されます。

1行目の中央まで進んだところが下の画面です。

PxlChg_4 

交互に On になっていたピクセルの On と Off が切り替わっていることが一目瞭然です。そして、X=0、Y=0.1 となっていて、デフォルトの論理座標系での値になっていることが確認できます。

座標系とピクセル位置4 

さらに、何かキーを押します。押し続けるとプログラムは進むので、しばらく押し続けてみてください。

PxlChg_5 


3行目まで進みました。X と Y の値もデフォルトの論理座標系に従っていることが分かります。

PxlChg_6 

3行目の右端のピクセルで PxlChg が実行され、そのときの X と Y の値が表示されたところです。


以上から、PxlChg では、パラメータに X と Y を使えないかわりに、X と Y には、デフォルトの論理座標系での座標値 (X, Y) の値が自動的に更新されることが確認できました。

PxlChg を使う時は、変数 X と Y の値が勝手に変更されることに留意し、プログラムを書く必要があります。通常は、ピクセル位置の指定に X と Y が使え、さらに論理座標系で使える PlotChg を使う方が余計なことに留意する必要がありません。

逆に言えば、物理座標系からデフォルトの論理座標系への自動変換をする機能をうまく利用したいとき、物理座標系でピクセルの On Off を切り替えたいときは、PxlChg コマンドの利用価値があると英増す。


なお、PxlChg コマンドで設定する値には制限があって、制限以外の値を設定すると Argument ERROR になります。
デフォルトおよび ViewWindow の論理座標系で使うコマンドでは、パラメータの値に制限はなくエラーにならないのに対して、物理座標系で使うコマンドは、制限外の値を設定するとエラーになることも留意する必要があります。

PxlChg A,B では、A = 1 ~ 63 の整数、B = 1 ~ 127 の整数に制限されます。実際に簡単に試せるので、ここでは確認プログラムの紹介は割愛します。


PxlChg

書式PxlChg A,B
  • パラメータ A と B で指定された位置のピクセルの On と Off を切り替える。
  • パラメータ A と B は、物理座標系での位置を示す。変数 X と Y を使う場合は、その値に留意する。
  • このコマンドが実行されると、消去した点の物理座標系での位置をデフォルトの論理座標系での座標 (X, Y) に換算し、その値が変数 X と Y に自動的に代入・更新される。
  • A には、1 から 63 までの整数値を用い、それ以外の値を設定すると Argument ERROR になる。
  • B には、1 から 127 までの整数値を用い、それ以外の値を設定すると、Argument ERROR になる。

PxlChg の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F3] (Chg)





今回のまとめ
  • PxlChg A,B は、物理座標系で位置を設定し、その位置のピクセルの On と Off を切り替える。
  • A = 1 ~ 63、B = 1 ~ 127 の整数値に限定去れ、それ以外を設定すると Argument ERROR になる。
  • PxlChg のパラメータに X と Y を使う時は、その値に留意する。
  • 変数 X と Y は、描画した点をデフォルト論理座標系に変換した座標値 (X, Y) が自動的に代入・更新される。PxlChg コマンド使用時には、変数 X と Y の利用には注意が必要である。


今回使ったグラフィックス コマンド

  • PxlChg



つづく...

Casio Basic入門 G14 / 目次



応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ


 



keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ



関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

Casio Basic入門G12

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

修正 2015/11/03

 5. Casio Basic でグラフィックス

前回: Casio Basic入門G11

Chapter G12
PxlOff コマンド


前回 ViewWindow による座標系設定で動作確認した以下のグラフィックス描画を行うコマンドは、[SHIFT] [F4] (Sketch) に続くメニューの中にあり、これらをSketch描画コマンドと呼ぶことにします。
  • Plot
  • PlotOn
  • PlotOff
  • PlotChg
  • Line
  • F-Line
  • Circle
  • Vertical
  • Horizontal
  • Text
  • PxlOn
  • PxlOff
  • PxlChg
  • PxlTest( )
今回は、PxlOff について、詳細動作を調べます。このコマンドは PxlOn とほぼ同じです。


PxlOff コマンド

fx-9860GII Ver 2.04 のソフトウェアマニュアル の 8-24 ページには、以下の PxlOff コマンドの説明があります。

PxlOff <行番号>,<列番号>

説明はこれだけです。

ここで、行番号は縦方向、列番号は横方向です。これだけでは、原点がどこにあるか分かりません。

PxlOff コマンドは、物理座標系で位置を設定し、その位置のピクセルを消灯(OFFに)します。
座標系とピクセル位置2 
原点は、左上で (1, 1) です。このコマンドを記述すると、例えば、

PxlOff y,x

となります。1つめのパラメータを y 、2つめのパラメータを x としてみます。

通常、x を横方向の座標値、y を縦方向の座標値にするので、このようにしてみました。多くのコマンドでは 横方向 (x) が1つめのパラメータに来るのですが、PxlOff の1つめのパラメータは縦方向の y であり、2つめのパラメータが横方向の x で、違和感があります。仕様なので、しかたありません。


PxlOff は、指定された位置のピクセルを消灯(OFFに)するするコマンドで、

PxlOff y,x

は、

ViewWindow 1,127,0,1,63,0
PlotOff x,y

と同じ位置で点描画を消去することになります(なる筈です)。

ところが、

実際に

PxlOff Y,X 

と、1行だけのプログラムを書いて、実行するとエラーになります。

PxlOff の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F2] (Off)

Argument_ERROR  

[2015/10/28] 訂正
変数 Y に 1 ~ 63 以外の整数、変数 X に 1 ~ 127 以外の整数が格納されていると、Argument ERROR となります。
PxlTest() を使う際には、変数 X と Y の初期値に留意する必要があり、必要に応じてエラーが出ないように初期化する必要があります。
===== 訂正ここまで =====


PxlOff コマンドを使う時、変数 XY は、描画した点の位置をデフォルトの論理座標系に換算した座標 (X, Y) の値に自動的に更新されることが確認できます。

例えは、PxlOff A,B を実行すると、物理座標系での点(B, A) を描画し、この点の位置がデフォルトの論理座標系へ変換された座標 (X, Y) へ自動計算され、X と Y がその値で自動的に更新されるわけです。そして、変数 X と Y は使ってはいけない予約変数として扱われます。


以上を確認するために、以下のプログラムを実行してみます。

ファイル名: PXLOFF1
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff

SketchNormal Horizontal 0

Text 1,1,"PxlOff A,B"
Text 13,6,"(B,A)"
Text 13,35,"(X,Y)"
Text 19,6,"B="
Text 19,35,"X="
Text 25,6,"A="
Text 25,35,"Y="
Text 49,6,"Any KEY DOWN: Continue"

32→A:0→X:0→Y
For 1→B To 127
PxlOff A,B
Text 19,16,"  "  (スペース3個)
Text 19,45,"   " (スペース5個)
Text 19,16,B
Text 19,45,X
Text 25,16,"  "  (スペース3個)
Text 25,45,"   " (スペース5個)
Text 25,16,A
Text 25,45,Y
While Getkey=0
WhileEnd

Next

ダウンロード: PXLOFF1 


このプログラムは、先ず画面中央に水平線を描画します。この描画には SketchNormal Horizontal 0 と記述しています。

SketchNormal は、後に続く Sketch描画コマンドの線のスタイルを標準に設定するものです。
Casio Basic入門G06 参照

Horizontal 0 は、Y 座標値 0 の位置に水平線を描画します。上のプログラムでは ClrGraph を実行し、その後 ViewWindow で座標系の設定を行っていないので、デフォルトの論理座標系が指定されているので、Y 座標値 0 は画面の上下方向の中央を示します。
座標系とピクセル位置4 

このプログラムでは、この水平線上で、左から順に1ピクセルごとに PxlOff を実行してゆきます。PxlOff コマンドは物理座標系で位置を指定するので、Y 座標軸の中央の位置を物理座標系に換算すると、Y = 32 になります。

但し、位置指定のためのパラメータには 変数 X と Y を使えない(使うと Argument ERRORになる)ので、32→A で A に 32 を格納しておいてから、For 文を利用して B を 1 から 127 まで1つづつ変化させながら、PxlOff A,B を実行しています。

For 文の後には、

While Getkey=0
WhileEnd


があります。この2行の While ループ は、何もキーが押されない限りループを回り、何かキーが押されたらループを抜けて処理を下へ進めます。つまり、何かキーが押されるまでプログラムをそこで止める働きをします。

キー押下でプログラムをコントロールしたい - 逆引き Casio Basic 参照



このプログラムのポイントは、

PxlOff A,B

を実行した時、変数 X と Y に格納されている値を表示するところにあります。

Text 19,45,X



Text 25,45,Y

で、X と Y の値を表示しています。

併せて、変数 B と A の値も同時に表示します。

このプログラムを起動すると、以下の画面表示になります。

PxlOff_1 

水平線の左端のピクセルが消去されています。A と B は物理座標系での座標 (B, A) の値なので、ここでは B=1、A=32 となっていますね。
さて、この時の X と Y の値を見てみます。X = -6.3Y = 0 となっています。
これは、デフォルトの論理座標系での左上の点の座標値ですね。

座標系とピクセル位置4 
それでは、何かキーを押すと、

PxlOff_2 

2つめの点が描画され、B=2、A=32 と表示されていて、X = -6.2Y = 0 となっています。
座標 (B, A) と (X, Y) がそれぞれ、物理座標系とデフォルトの論理座標系での点の位置を示していることが確認できます。

さらに、何かキーをしばらく長押ししてみると、X が負の値で、0.1 づつ大きくなっていることが分かります。

そして、例えば以下のような画面になる時、

PxlOff_3 

ここでは、X が、それまで負の値で、0.1 づつ大きくなってきて、ついに X = 0 になる時を示していて、デフォルトの論理座標系でのX の値だと分かります。

そのまま、何かキーを長押しすると、以下のようになって表示の変化が止まります。

PxlOff_4 

B = 127 で右端まで到達したことを示していて、その時 X = 6.3 になっています。A と Y の値は、変化せずそれぞれ 32 と 0 のままです。
ここで、プログラムが最後まで実行されました。


以上から、PxlOff では、パラメータに X と Y を使えないかわりに、X と Y には、デフォルトの論理座標系での座標値 (X, Y) の値が自動的に更新されることが確認できました。

PxlOff を使う時は、変数 X と Y の値が勝手に変更されることに留意し、プログラムを書く必要があります。単に点を描画するには、敢えて PxlOff を使う必要はなくて、PlotOff を使えば良いと思います。

逆に言えば、物理座標系からデフォルトの論理座標系への自動変換をする機能をうまく利用するとき、PxlOff コマンドの利用価値があると英増す。


なお、PxlOff コマンドで設定する値には制限があって、制限以外の値を設定すると Argument ERROR になります。
デフォルトおよび ViewWindow の論理座標系で使うコマンドでは、パラメータの値に制限はなくエラーにならないのに対して、物理座標系で使うコマンドは、制限外の値を設定するとエラーになることも留意する必要があります。

PxlOff A,B では、A = 1 ~ 63 の整数、B = 1 ~ 127 の整数に制限されます。実際に簡単に試せるので、ここでは確認プログラムの紹介は割愛します。


PxlOff

書式PxlOff A,B
  • パラメータ A と B で指定された位置のピクセルを消す(OFFにする)。
  • パラメータ A と B は、物理座標系での位置を示す。変数 X と Y を使う時は、その値に留意する。
  • このコマンドが実行されると、消去した点の物理座標系の位置がデフォルトの論理座標系での座標 (X, Y) に変換され、その値が変数 X と Y に自動的に代入・更新される。
  • A には、1 から 63 までの整数値を用い、それ以外の値を設定すると Argument ERROR になる。
  • B には、1 から 127 までの整数値を用い、それ以外の値を設定すると、Argument ERROR になる。

PxlOff の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F2] (Off)





今回のまとめ
  • PxlOff A,B は、物理座標系で位置を設定し、その位置のピクセルを消す(OFFにする)。
  • A = 1 ~ 63、B = 1 ~ 127 の整数値に限定去れ、それ以外を設定すると Argument ERROR になる。
  • PxlOff のパラメータに X と Y を使う場合は、その値に留意する。
  • 変数 X と Y は、描画した点をデフォルト論理座標系に変換した座標値 (X, Y) が自動的に代入・更新される。PxlOff コマンド使用時には、変数 X と Y の利用には注意が必要である。


今回使ったグラフィックス コマンド

  • PxlOff



つづく...

Casio Basic入門 G13 / 目次




応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ


 



keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ


関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

Casio Basic入門G11

Casio Basic入門
<目次>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

修正:2015/11/03

 5. Casio Basic でグラフィックス

前回: Casio Basic入門G10

Chapter G11
PxlOn コマンド


前回 ViewWindow による座標系設定で動作確認した以下のグラフィックス描画を行うコマンドは、[SHIFT] [F4] (Sketch) に続くメニューの中にあり、これらをSketch描画コマンドと呼ぶことにします。
  • Plot
  • PlotOn
  • PlotOff
  • PlotChg
  • Line
  • F-Line
  • Circle
  • Vertical
  • Horizontal
  • Text
  • PxlOn
  • PxlOff
  • PxlChg
  • PxlTest( )
今回は、PxlOn について、詳細動作を調べます。


PxlOn コマンド

fx-9860GII Ver 2.04 のソフトウェアマニュアル の 8-24 ページには、以下の PxlOn コマンドの説明があります。

PxlOn <行番号>,<列番号>

説明はこれだけです。

ここで、行番号は縦方向、列番号は横方向です。これだけでは、原点がどこにあるか分かりません。

PxlOn コマンドは、物理座標系で位置を設定し、その位置のピクセルを点灯して、点を描画します。
座標系とピクセル位置2 
原点は、左上で (1, 1) です。このコマンドを記述すると、例えば、

PxlOn y,x

となります。1つめのパラメータを y 、2つめのパラメータを x としてみます。

通常、x を横方向の座標値、y を縦方向の座標値にするので、このようにしてみました。多くのコマンドでは 横方向 (x) が1つめのパラメータに来るのですが、PxlOn の1つめのパラメータは縦方向の y であり、2つめのパラメータが横方向の x で、違和感があります。仕様なので、しかたありません。

物理座標系で位置を設定するコマンドは、PxlOn 以外も全てこのようになります。既に使ってきている Text コマンドも同様ですね。

PxlOn は指定されたピクセルを点灯(ONに)するコマンドで、

PxlOn y,x

は、

ViewWindow 1,127,0,1,63,0
PlotOn x,y

と同じ位置に点描画することになります(なる筈です)。

ところが、

実際に

PxlOn Y,X 

と、1行だけのプログラムを書いて、実行するとエラーになります。

PxlOn の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F1] (On)

Argument_ERROR  

[2015/10/28] 訂正
変数 Y に 1 ~ 63 以外の整数、変数 X に 1 ~ 127 以外の整数が格納されていると、Argument ERROR となります。
PxlTest() を使う際には、変数 X と Y の初期値に留意する必要があり、必要に応じてエラーが出ないように初期化する必要があります。
===== 訂正ここまで =====

PxlOn コマンドを使う時、変数 XY は、描画した点の位置をデフォルトの論理座標系に換算した座標 (X, Y) の値に自動的に更新されることが確認できます。

例えは、PxlOn A,B を実行すると、物理座標系での点(B, A) を描画し、この点の位置がデフォルトの論理座標系へ変換された座標 (X, Y) へ自動計算され、X と Y がその値で自動的に更新されるわけです。そして、変数 X と Y は使ってはいけない予約変数として扱われます。


以上を確認するために、以下のプログラムを実行してみます。

ファイル名: PXLON1
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff

Text 19,6,"PxlOn A,B"
Text 25,6,"(B,A)"
Text 25,35,"(X,Y)"
Text 31,6,"B="
Text 31,35,"X="
Text 37,6,"A="
Text 37,35,"Y="
Text 49,6,"Any KEY DOWN: Continue"

1→A:0→X:0→Y
For 1→B To 127
PxlOn A,B
Text 31,16,"  "  (スペース3個)
Text 31,45,"   " (スペース5個)
Text 31,16,B
Text 31,45,X
Text 37,16,"  "  (スペース3個)
Text 37,45,"   " (スペース5個)
Text 37,16,A
Text 37,45,Y
While Getkey=0
WhileEnd

Next

Text 49,6,"            " (スペース23個)
Text 49,6,"EXE: Continue"◢

Text 49,6,"Any KEY DOWN: Continue"
1→B:0→X:0→Y
For 1→A To 63
PxlOn A,B
Text 31,16,"  "  (スペース3個)
Text 31,45,"   " (スペース5個)
Text 31,16,B
Text 31,45,X
Text 37,16,"  "  (スペース3個)
Text 37,45,"   " (スペース5個)
Text 37,16,A
Text 37,45,Y
While Getkey=0
WhileEnd

Next

Text 49,6,"            " 
(スペース23個)


ダウンロード: PXLON1 [2015/10/04: ダウンロードファイルの修正]

このプログラムは、一番上の行に左から順に点を1個づつプロットする前半部分(1つめの For 文のブロック)と、一番左の列に上から順に点を1個づつプロットする後半部分(2つめの For 文のブロック)から構成されています。

それぞれの For 文の最後には、

While Getkey=0
WhileEnd


があります。この2行の While ループ は、何もキーが押されない限りループを回り、何かキーが押されたらループを抜けて処理を下へ進めます。つまり、何かキーが押されるまでプログラムをそこで止める働きをします。

Casio Basicコマンドリファレンス: While ループ

キー押下でプログラムをコントロールしたい - 逆引き Casio Basic


このプログラムのポイントは、

PxlOn A,B

を実行した時、変数 X と Y に格納されている値を表示するところにあります。

Text 31,45,X



Text 37,45,Y

で、X と Y の値を表示しています。

併せて、変数 B と A の値も同時に表示します。

このプログラムを起動すると、以下の画面表示になります。

PxlOn1 

左上に点が描画されています。A と B は物理座標系での座標 (B, A) の値なので、ここでは B=1、A=1 となっていますね。
さて、この時の X と Y の値を見てみます。X = -6.3Y = 3.1 となっています。
これは、デフォルトの論理座標系での左上の点の座標値ですね。

座標系とピクセル位置4 
それでは、何かキー(但し [EXE] 以外)を押すと、

PxlOn2 

2つめの点が描画され、B=2、A=1 と表示されていて、X = -6.2Y = 3.1 となっていますね。
座標 (B, A) と (X, Y) がそれぞれ、物理座標系とデフォルトの論理座標系での点の位置を示していることが確認できます。

さらに、何かキーをしばらく長押ししてみると、X が負の値で、0.1 づつ大きくなっていることが分かります。

そして、例えば以下のような画面になる時、

PxlOn3 

ここでは、X が、それまで負の値で、0.1 づつ大きくなってきて、ついに X = 0 になる時を示していて、デフォルトの論理座標系でのX の値だと分かります。

そのまま、[EXE] キー以外の何かキーを長押しすると、以下のようになって表示の変化が止まります。

PxlOn4 

B = 127 で右端まで到達したことを示していて、その時 X = 6.3 になっています。A と Y の値は、変化せずそれぞれ 1 と 3.1 のままです。
ここで、前半の For 文が終わりました。

表示に従って、[EXE] を1回押すと、

PxlOn5 

さらに、何かキーを少しだけ長押しすると、

PxlOn6 

今度は、左上から順に下へ点が描画されてゆきます。そして、B と X の値へ変化せず、A と Y が変化してゆきます。Y の値は 0.1 づつ小さくなってゆきます。

PxlOn7 

縦方法の真ん中に点が描画され、A = 32、 Y = 0 になっています。論理座標系では、画面中央が原点 (0, 0) になるので、Y = 0 になっているわけです。

さらに、何かキーを長押しすると、画面の変化がなくなります。

PxlOn8 

画面の左下に点が描画され、A = 63、Y = -3.1 になっています。

以上から、PxlOn では、パラメータに X と Y を使えないかわりに、X と Y には、デフォルトの論理座標系での座標値 (X, Y) の値が自動的に更新されることが確認できました。

PxkOn を使う時は、変数 X と Y の値が勝手に変更されることに留意し、プログラムを書く必要があります。単に点を描画するには、敢えて PxlOn を使う必要はなくて、PlotOnPlot を使えば良いと思います。

逆に言えば、物理座標系からデフォルトの論理座標系への自動変換をする機能をうまく利用するとき、PxlOn コマンドの利用価値があると英増す。


なお、PxlOn コマンドで設定する値には制限があって、制限以外の値を設定すると Argument ERROR になります。
デフォルトおよび ViewWindow の論理座標系で使うコマンドでは、パラメータの値に制限はなくエラーにならないのに対して、物理座標系で使うコマンドは、制限外の値を設定するとエラーになることも留意する必要があります。

PxlOn A,B では、A = 1 ~ 63 の整数、B = 1 ~ 127 の整数に制限されます。実際に簡単に試せるので、ここでは確認プログラムの紹介は割愛します。


PxlOn

書式PxlOn A,B
  • パラメータ A と B で指定された位置のピクセルを点灯(ONに)する。
  • パラメータ A と B は、物理座標系で位置を示す。変数X と Y を使う時はその値に留意する。
  • このコマンドが実行されると、描画した点の物理座標系での位置がデフォルトの論理座標系での座標 (X, Y) に自動変換し、変数 X と Y に自動的に代入・更新される。
  • A には、1 から 63 までの整数値を用い、それ以外の値を設定すると Argument ERROR になる。
  • B には、1 から 127 までの整数値を用い、それ以外の値を設定すると、Argument ERROR になる。

PxlOn の入力方法[SHIFT] [F4] (Sketch) [F6] (▷) [F6] (▷) [F3] (PIXL) [F1] (On)





今回のまとめ
  • PxlOn A,B は、物理座標系で位置を設定し、その位置のピクセルを点灯(ONに)する。
  • A = 1 ~ 63、B = 1 ~ 127 の整数値に限定去れ、それ以外を設定すると Argument ERROR になる。
  • PxlOn のパラメータに X と Y を使う場合は、その値に留意する。
  • 変数 X と Y は、描画した点をデフォルト論理座標系に変換した座標値 (X, Y) が自動的に代入・更新される。PxlOn コマンド使用時には、変数 X と Y の利用には注意が必要である。


今回使ったグラフィックス コマンド

  • PxlOn



つづく...

Casio Basic入門 G12 / 目次




応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ


 




keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ


関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

最新記事
検索フォーム
最新コメント
カテゴリ
C# (3)
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム電卓は、プログラムを作って、使ってナンボ!

プログラム電卓を実際に使って気づいたこと、自作プログラム、電卓での Casio Basic, C.Basic そして Casio Python プログラミングについて書いています。

なお管理人はカシオ計算機の関係者ではありません。いつでもどこでもプログラミングができるプログラム電卓が好きな1ユーザーです。


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

ブロとも申請フォーム

この人とブロともになる

QRコード
QR