作成した返信
-
著者投稿
-
MZPlatformユーザー会サイト管理者
ReadModeの設定は、初期値の0であれば送信が途切れたタイミングで内容が出力され、2であれば改行の時点で内容が出力されます。
Serial.println()を使用していれば、どちらも同じように動作しますが、printの場合は2だと出力されないと思います。本来はprintで0で良いのですが、スケッチの書き方やハードウェアの関係で出力されないことはあるようなので、printlnと2の組み合わせが安全です。この情報は特に文書として明記しておりません。Javadocに数字の意味について少し記述がある程度です。
処理完了イベント中に処理を記述して動作しないのは、ハードウェアやスケッチとの関係もありますので、こちらではわかりません。エラーメッセージが表示されたということでしょうか。基本的に、いろいろ試して動いた方法でお使いください。
MZPlatformユーザー会サイト管理者伊予研究会様からコメントしていただいたように、上記のテスト用のスケッチに、文字列を出力する行を追加して、再度テストをしていただけますでしょうか。
文字列を出力する場合、特に理由がなければ、Serial.print(”Out”)よりSerial.println(“Out”)の方が良いと思います。
それでもMZ側に文字列が出力されない場合、シリアル通信コンポーネントの属性情報設定でReadModeを0から2に変更すると出力されるかもしれません。
MZPlatformユーザー会サイト管理者最後の質問について先に回答します。コマンドと引数のファイル名はいずれもフルパス名かカレントディレクトリからの適切な相対パス名で指定する必要があります。
本題については、ここまでのご説明ではまだ問題の本質がわかりません。まずは、Arduino側のスケッチと回路を追加して、MZアプリからの文字列送信がArduino側で正しく読み込まれ、Arduino側から文字を送信しているかどうかをご確認ください。例えば、回路にLEDを追加して、Arduino側で処理が進んだらLEDを点灯して時間が経ったら消灯するようにするなどが考えられます。
上記が確認できましたら、Arduino側から文字を送信しているのにMZアプリでは受信されないという問題であるとわかりますし、点灯しなければArduino側の処理の問題となります。
MZPlatformユーザー会サイト管理者ダウンロードサイトで修正版のMZ Platform 3.6 Raspberry Pi版実行環境を公開しましたのでお知らせします。
MZPlatformユーザー会サイト管理者現在ダウンロード可能なMZ Platform 3.6 Raspberry Pi版実行環境は、シリアル通信コンポーネント機能に不具合が含まれていることがわかりました。後日修正版を公開しますが、それまでにご自身で修正したい場合は、下記の作業をお願いします。
添付のZIPファイルを展開したJARファイルを、下記のフォルダに配置します。
(元のファイルは事前に名前を変えておけばあとで元に戻せます)
(MZインストール先)/MZPlatform/3.6/jars/rxtx/添付ファイル:
MZPlatformユーザー会サイト管理者実際にどのような問題が生じているかわかりませんが、添付のMZアプリの内容を見る限り、これはWindowsでしか動かないと思います。
シリアル通信コンポーネントのメソッド「指定されたポートに接続する(String)」で指定するポート名は、環境に依存します。Windowsであれば「COM(数字)」ですが、Raspberry Pi(Linux)では「/dev/tty***(数字)」という形式になります。
シリアル通信コンポーネントでは、上記のような環境の違いを吸収するために、「ポートの一覧を取得する()」メソッドを提供します。これで得られるリストをコンボボックス等に設定して、選んだ項目の文字列を接続時に使用すれば、どの環境でも動作するアプリとなります。
また、Linuxではシリアル通信のポートを使用する場合、ルート権限が必要です。
MZアプリの実行時には、下記のようにsudoをつけて実行する必要があります。$ sudo /home/pi/MZPlatform/3.6/pfloader ***.mzax
MZPlatformユーザー会サイト管理者エラーメッセージに多少問題がありますが、「バイナリファイルからのアプリケーション情報ロードに失敗しました」は、ファイルが見つからない場合にも表示されます。
実行対象のファイルを指定する際に、GUIのファイル選択ダイアログでファイルを指定する場合は問題になりませんが、今回のようにコマンドで指定する場合はファイル名やパス名の記述ミスでもエラーが出ます。
注意点としては、コマンドの書式は半角スペースでコマンド本体と引数の間を区切りますので、指定したいファイル名やパス名に空白文字が含まれていると、コマンド実行が意図した内容になりません。基本的にコマンド実行が中心となるLinux(Raspberry Pi含む)では、ファイル名やパス名に空白文字を入れない方が良く、また日本語の使用も避けた方が良いです。Windowsでも、ファイル名やパス名に空白文字が含まれていると、ファイルをダブルクリックして実行することができませんので、やはり避けた方が良いです。
MZPlatformユーザー会サイト管理者ご指摘の通り、最新のRaspbianでJavaがOpenJDK11になっているようで、現在のReadme.txtの手順で動作させることはできない状況です。
お手数ですが、ひとつ前のバージョンのRaspbianでお試しいただけますでしょうか。下記リンク先からZIPファイルがダウンロード可能です。
https://downloads.raspberrypi.org/raspbian/images/raspbian-2019-04-09/最新のRaspbianを使用した場合の手順については、これから確認しますので、少々お待ちください。
MZPlatformユーザー会サイト管理者ご指摘の通り、サイズを変更するためには原寸サイズのチェックを外す必要がありました。
また、添付していただいた方法で原寸サイズのチェックを外せるはずでしたが、実際に動作しないことが確認できましたので調査したところ、こちらはMZ側の不具合でした。帳票要素がバーコードのときの処理にミスがあり、メソッド実行では原寸サイズのチェックが外れない不具合がありました。ご迷惑をおかけして誠に申し訳ありません。
不具合は次期リリースで修正されますが、現在お使いのMZに反映するためには、下記の作業をお願いします。添付のZIPファイルを展開して、中に含まれるjarファイルを、MZのインストールフォルダに含まれるjarsフォルダに置いてください。その上で、中に含まれるtxtファイルの最初の行をコピーして、インストールフォルダに含まれるetcフォルダのPlatformClassPath.iniの最初の行に貼り付けて保存してください。
以上の作業で、以降の起動では原寸サイズのチェックがメソッドからも外せるようになるはずです。
MZPlatformユーザー会サイト管理者2点確認をお願いします。
setEditPaperElementSizeに限らず、帳票要素に変更を加えるメソッドを実行する前には、編集対象のIDを指定して編集を宣言するsetEditPaperElement(int)を実行する必要がありますが、それは実行していますでしょうか。
また、バーコード帳票要素に関しては、サイズを自由に指定することができず、幅を指定すると高さは自動で決まります。そのため、setEditPaperElementSizeの動作が期待するものと違うかもしれません。setEditPaperElementWidth(float)を実行してみていただけますでしょうか。
以上、ご確認いただけますでしょうか。
-
著者投稿