フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
TEST2mod1の処理では元の状態に戻りますので、このような記述をしてはいけません。同じアクションイベントに処理と判定処理を3組接続したら、必ず3回実行されます。処理と判定処理が1組だけ接続されるようにしてください。外部通信の中の処理を修正したファイルを添付します。
同様に、修正してはいませんが実行2ボタンの処理のように書いてもいけません。これは必ず3回実行されます。こちらは外部通信からイベントが出てくるので、そのイベントが発生したら次を実行するように書けば良いと思います。
添付ファイル:
MZPlatformユーザー会キーマスター拝見しました。
外部通信の中の処理Aにサブルーチン4の「処理を呼び出す」が3回接続されていますので、このままでは常に3回実行します。改善方法は、処理Aに必ず実行する処理(サブルーチン4)と判定処理を接続する構造にすることです。例えば、サブルーチン4の処理の中で論理値格納変数を使ってOKのときにtrueを設定し、NGのときにfalseを設定しておけば、その値に従って処理を継続するかどうかを判定することができます。修正例を添付しますのでご覧ください。この例では、継続不可の場合に元のエラーメッセージが、継続可のときに別のメッセージが表示されるようにしてありますので、継続可のところに処理を追加すればOKのときのみ処理を継続することができると思います。
添付ファイル:
MZPlatformユーザー会キーマスターたいへん恐縮ですが、文章だけですとこちらが正確に状況を理解できているか判断が難しい内容に思われます。できれば、状況を再現した簡潔なアプリケーションを添付していただけると助かります。
参考までに、処理の分岐を記述したアプリケーション(MZAX)をZIP形式に圧縮したファイルを添付します。2つのサブルーチンがあり、実行するとそれぞれメッセージダイアログが表示されます。チェックなしで開始ボタンを押すと処理1のみを実行し、チェックありで開始ボタンを押すと処理2まで実行します。
お問い合わせの中で、「外部からOKが来なかった時」の具体的な状況がわかりませんが、基本的には添付したアプリのように何らかの値を使って処理の分岐を書くことになります。イベント生成を使って分岐をすることにはならないと思いますが、状況によってはイベント伝播制御コンポーネントなどを使うことはあるかもしれません。
もう少し具体的な情報をいただければ詳細にご説明しますので、よろしくお願いします。
添付ファイル:
MZPlatformユーザー会キーマスターExcelファイルの特定セルから日付を取得するためには、Excelファイルアクセスの「getCurrentCellValueAsDate()」メソッドを使います。
対象となるExcelファイルを開いてブックのシートを選択し、行からセルを選択した後、上記のメソッドを呼び出します。メソッド名が日本語化されていませんので、メソッド選択時は全メソッド対象にしてお探しください。
参考までに、Excelファイルアクセスのサンプルアプリに機能追加したサンプルおよびExcelファイルを添付します。
添付ファイル:
MZPlatformユーザー会キーマスターMZ Platform 3.4のリリースノートに記述してありますように、Java8からJDBC-ODBCブリッジが削除されている影響で、MZの不具合ではありません。
Oracleからの発表は下記リンク先をご覧ください。
http://www.oracle.com/technetwork/jp/java/javase/overview/8-whats-new-2157071-ja.htmlMZのビルダーからその機能が使える理由は、MZでは暫定的にJava7を含めて配布しておりまして、対象のクラスがパスに含まれるように工夫しているからです。
Webアプリでは、Tomcat等のサーバをJava8で起動している場合、クラスパスに対象となるクラスが含まれませんので、ご報告いただいた状況が発生すると思います。
MZのビルダー側の措置はあくまでも暫定的なもので、今後JavaにJDBC-ODBCブリッジが含まれることはないと思われますので、AccessやExcelファイルをデータベースとして接続する処理は変更をご検討いただくか、商用のJDBC-ODBCブリッジを購入して利用するなどの対応をご検討ください。
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アプリを操作できない状態になっているのか、どちらでしょうか。 -
投稿者投稿