作成した返信
-
著者投稿
-
MZPlatformユーザー会サイト管理者
ご指摘の通り、日時選択ダイアログは取消ボタンと右上の×ボタンで閉じたときに発生するイベント種別とイベント番号が同一となっております。考え方としては、どちらもイベント種別がデータ選択で、何も選択していない状態(イベント番号0)を表すからです。
このイベント発生については変更できませんので、取消ボタンを押したときとダイアログを右上の×ボタンで閉じた時の処理を変えるためには、下記の別の方法をお試しください。
その方法とは、日時選択ダイアログと同様の機能を持つ日時選択パネルを、通常のダイアログに配置して使用する方法です。両者の方法を比較するサンプルアプリを添付しておきます。日時選択パネルを用いた方法では、ダイアログを閉じるイベントと各ボタンを押したときのイベントが個別になります。
注意点としては、ダイアログを右上の×ボタンで閉じた時と、各ボタンを押したときにメソッドでダイアログを閉じるときの両方で、ダイアログからアクションイベントが発生します。また、日時選択パネルのデータ選択イベントを用いると、日時選択ダイアログとはイベント発生のタイミングが異なることになるので、サンプルでは使用しておりません。
添付ファイル:
MZPlatformユーザー会サイト管理者テキストフィールド等のテキストを編集するコンポーネントには、そのコンポーネントにカーソルが存在している場合に「End」キーを押下した際に編集中の行の文字列の最後にカーソルを移動する機能が既に割り当てられております。従いまして、キーイベントハンドラーを用いて「End」キーによるショートカット機能を設定することはできません。他のキーの割り当てをご検討いただけますようお願いします。
MZPlatformユーザー会サイト管理者残念ながら、産総研でも試してみたことがありますが、実現できておりません。
Windowsの音声認識機能については、OSのバージョンにもよると思いますが、産総研では8.1で機能をセットアップをしてみましたが、この段階で動作の確認ができていない状況です。もし御社の環境で、Windowsの音声認識機能を使ってテキストファイル等のカーソル位置に自由に文字を書き込むことができているのであれば、MZのテキストエリアやフィールドにも書き込める可能性はあります。一方でWindowsの音声認識機能が特定のソフトウェアでないと動作しない状況であれば、MZでの利用は難しいと思われます。
市販の音声認識ソフトについては検証しておりませんが、上記のようにテキストを文字入力位置に自由に書き込めるソフトが存在すれば、MZでも利用できる可能性があります。
MZPlatformユーザー会サイト管理者詳細なご説明ありがとうございます。
確かに、マイコンボードからのデータを受信したMZ側で、通信が完了しない状態になっているようです。そのまま通信を終了しようとすると、フリーズするという現象は以前生じたことがありました。これについては、残念ながら不具合の原因を特定できておりません。ご説明いただいた中で、もしマイコンボードから送信されるデータが必ず改行コードを含んでいるのであれば、以下の設定をお試しいただけますでしょうか。
1)ビルダーで、「シリアル通信」コンポーネントの属性情報を開きます。
(左側に並んでいるコンポーネント上でダブルクリックすれば開きます)
2)属性「ReadMode」を0から2に変更して、「設定」ボタンで閉じます。
3)アプリを別名で保存して実行し、通信を開始してお試しください。属性「ReadMode」を2にすると、改行コードを読み取ったときにデータ生成イベントが発生します。0のときは、通信の途切れた時にデータ生成イベントが発生しまして、改行コードがない場合も一連の文字列等を受信することができますが、何らかの理由で途切れていない状態になっているとすると、イベントが発生せずに今回のような状態になると思われます。
MZPlatformユーザー会サイト管理者Sampleの「シリアル通信ターミナル」アプリとArduinoのシリアル通信について、産総研で試している範囲では問題なく動作しております。そのため、すぐには原因が思い当たりません。お役に立てず申し訳ありません。
こちらで想定する範囲外の使い方をされているかもしれませんので、もう少し状況を詳細にご説明していただけると助かります。例えば、そのマイコンボードはどのようなデータを受信して、どのようなデータを送信するものでしょうか。そのときの通信速度などの設定もお知らせください。
加えて、問題の切り分けにいくつか質問させていただきます。
お使いのマイコンボードは、MZアプリから送信されたデータに応じて正常に動作していることが確認できるので、送信は問題ないと判断されているのでしょうか。一方、受信ができないとは、マイコンボードからの送信は正常に実施されていることが確認できるが、MZアプリ側で受信が確認できないということでしょうか。また、待ち状態が続いているとは、MZアプリ自体の操作は可能で、受信データを表示できないだけでしょうか。もしくは、MZアプリを操作できない状態になっているのか、どちらでしょうか。MZPlatformユーザー会サイト管理者編集可能状態のコンボボックスにおいて文字列入力時にEnterキーを押下した場合と他のコンポーネントをクリックした場合のどちらにつきましても編集中の文字列が確定しアクションイベントが発生して定義された処理が実行されてしまいます.
アクションイベントに定義された処理が完了するまでその他の処理は実行できないないため,別途クリックしたコンポーネントに入力カーソルを移すことは通常の方法では難しいです.
この処理を実現する一つの方法として,スレッドアロケータ等を用いて別個の同期しない処理(別スレッド)を立ち上げることで一旦アクションイベントの処理を完了し,クリックされたコンポーネントがある場合には入力カーソルを移した上で,他のコンポーネントに入力カーソルがない場合のみ最初のテキストフィールドに入力カーソルを移動するという処理が考えられます.
詳細は添付のサンプルアプリケーションをご覧下さい.添付ファイル:
MZPlatformユーザー会サイト管理者リスト格納変数のメソッド「indexOf(Object)」は、リストに含まれる要素と同一のオブジェクトを引数に指定した時に、その位置を返します。そのため、少なくともオブジェクトの型が一致している必要があります。
元のテーブルの列型が文字列であれば、同じ文字列の比較で期待する結果が得られますが、もし列型が数値などになっていて、文字列と比較していると常に-1が返ることになります。
テーブルの列型を確認する方法は、実行(設定可)で実行して、テーブルの列ヘッダで右クリックすると表示されるメニューから、「列>列型」で選択状態になっている項目になります。
テーブルの列型を文字列に変更すれば解決すると思いますが、数値型から変更できない事情がある場合は、入力を数値入力フィールドにして、例えば整数(BigInteger)で型をそろえると、期待する結果が得られます。
もし、データベースから取得した結果をテーブルに表示している場合など、特殊な数値型になっていることがありますので、うまくいかない場合は再度お問い合わせください。
MZPlatformユーザー会サイト管理者I/Oユニットというのは、一般的なPLCのI/Oユニットということでよろしいでしょうか。
こちらも、MZでは対応しておりません。製品ごとに使用するソフトウェアやドライバが異なると思いますので、個別に対応することは難しいと考えています。一方、現状のMZで何らかの機器と通信する方法としては、シリアル通信(WindowsのCOMポート)を用いて文字列やバイト列で情報をやり取りする方法か、機器に付属する別ソフトウェアの機能をコマンドラインから使用可能な場合に標準入出力を介して情報をやり取りする方法が考えられます。なお、これらの場合でも、どのような書式で機器と情報をやり取りするかについての情報が入手可能であることが前提となります。
また、機器や付属するソフトウェアからファイル出力やDB出力が可能であれば、それらを介してMZと情報をやり取りすることは可能です。
MZPlatformユーザー会サイト管理者残念ながら、現在のMZはGPIB通信に対応しておりません。
2つ目の「I/O制御」はGPIB通信におけるI/O制御という意味でしょうか。そうであれば、こちらも対応しておりません。もし具体的なご要望をご記入いただければ、可能な範囲で検討やテストをしてみますので、お気軽にご記入ください。
MZPlatformユーザー会サイト管理者ご指摘の通り、MZでは多くの文字列表現から数値型への直接変換が可能なのですが、累乗表現は直接変換ができません。この場合は、関数電卓コンポーネントを用いることで、数値型に変換することが可能です。
関数電卓コンポーネントは「処理部品」の「演算制御」に分類されております。
サンプルアプリもMZ本体に含まれていますのでご参照ください。今回の例では、メソッド「計算式を設定する(String)」で変換したい文字列を指定して、続いてメソッド「計算を実行する()」を起動すると、戻り値が数値型として得られます。
-
著者投稿