フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
回答が遅くなり申し訳ありません。現在、同じものを取り寄せているところですが、もう少し先になりそうです。同じ会社の別製品で試しましたが、下記の通りで良い結果は出ておりません。
PC:Windows 10 Pro
QRコードリーダー:Tera社製elf819
MZ Platform 3.6のQRコードサンプル.mzaxで日本語のQRコード表示結果は、メモ帳・Excel・MZアプリ(3.6)のテキストエリアの全てで正しく入力できませんでした。MZのテキストフィールドで対応策をしても変わりませんでした。この機種はShift-JISの日本語QRコード対応とのことで、メモ帳とExcelは対応とのことでしたので、その後Tera社に問合せし、QRコードリーダー側の設定を変更してExcelのみ読み取れました。
MZPlatformユーザー会キーマスター演算コンポーネントの演算実行結果で処理を分岐したい場合は、演算実行メソッドを起動した以降は処理を書かず、演算コンポーネントの処理完了イベント処理に必要な処理を書いて、イベント番号で分岐します。また、処理完了イベント処理にすべて書くとイベント番号の設定がたいへんなので、分岐処理用のサブルーチンを作成してその処理を呼び出す方が良いでしょう。そのイメージを作成しましたので添付します。実際に動作するか確認していませんが、参考にしていただければと思います。
なお、スクリプト実行の戻り値として、falseか配列データが返るというのは、あまり良くないと思います。添付したZIPを展開したMZアプリでは、エラー時にnullを返すように修正しています。それによって、等価演算ではなくNull判定を使用しました。
添付ファイル:
MZPlatformユーザー会キーマスター途中経過をご報告します。今回テストした環境は下記になります。
PC:Windows 10 Pro
QRコードリーダー:unitech社製MS852-2UCB00-SG(CJKコントロールで日本語Shift-JIS設定)
MZ Platform 3.6のQRコードサンプル.mzaxで日本語のQRコード表示結果として、メモ帳・Excel・MZアプリ(3.6)のテキストエリアの全てで正しく入力できませんでした。
なお、MZアプリのテキストフィールドのみ、一度メソッド「入力モードを英語にする()」を呼び出すと正しく入力されました。参考までにそのアプリを圧縮したZIPファイルを添付しますので、こちらをお試しいただけますでしょうか。
Windows 8.1以前では問題なく動作したとの情報があるので、使用するPCのOSとQRコードリーダーの機種および設定に大きく依存しそうです。他の機種でも調査してみますが、添付のサンプルのような対応で改善しない場合は、日本語QRコードを使用しない方法をご検討いただいた方が良いかもしれません。
添付ファイル:
MZPlatformユーザー会キーマスター過去に回答したと思いますが、MZではbyte値を直接扱うことが難しいため、byte配列をMZ側に取り込まない方法をご検討いただけると助かります。MZに取り込むのがfloatの配列であれば、まだ対応の方法があります。
ひとまず最後の2つのご質問に回答いたします。
bytes[0]=1;では型が違うという理由でエラーが出るようです。
bytes[0]=(byte)1;のように型変換を明示的に書くとエラーは出なくなると思います。スクリプト実行で配列をreturnして、それを文字列出力する場合、その出力は正常で[Bがbyte値の配列を示しています。@以降はポインタアドレスを示すので値には変換できません。
配列を扱うためには、配列操作コンポーネントを使います。添付のZIPファイルを展開したMZアプリをビルダーでご確認ください。配列操作を使うと配列オブジェクトとインデックスを指定して値を取り出すことが可能です。ただ、値がbyteのためMZではintに変換されてしまいます。この配列の中身がfloatなどであればMZで値をそのまま使うことができます。
添付ファイル:
MZPlatformユーザー会キーマスター画像の添付ありがとうございます。もし可能であれば、ご使用のQRコードリーダーについてもお知らせいただけると助かります。
MZPlatformユーザー会キーマスター年末年始のため回答まで時間をいただきたく存じます。
もし可能であれば、どのような文字化けか教えていただけると助かります。。例えば「???」となるのか、難解な漢字の羅列になるのか、などです。
また、そのQRコードはどのように作成したか、わかる範囲で教えていただけますでしょうか。
- この返信は4年、 9ヶ月前にMZPlatformユーザー会が編集しました。
MZPlatformユーザー会キーマスターMZの問題というよりはウイルスバスターとの相性の問題だと思いますが、ご報告ありがとうございます。
MZPlatformユーザー会キーマスター確認ですが、スクリプト実行コンポーネントからbyte配列が戻り値として得られて、それをMZ側でfloatにしたいから変数に入れたいという趣旨ですよね。
以前のご質問に対する回答に書いた通り、MZでバイト配列からfloatに変換するためにはスクリプト実行コンポーネントでfloatにすることになります。つまり、スクリプト実行コンポーネントの処理中で得られるbyte配列をそのままfloatに変換する方が良いと思いますが、何か理由があるのでしょうか。
MZPlatformユーザー会キーマスター再度のご報告ありがとうございます。こちらでも調査してみます。
MZPlatformユーザー会キーマスターMZのデバッグ実行は、イベント処理の方法が通常実行と大きく異なり、シリアル通信との組み合わせでは正常に動かない場合があると思います。整数の場合は処理できて実数でできない理由はわかりませんが、できない場合はそういうものだということでご容赦ください。
-
投稿者投稿