作成した返信
-
著者投稿
-
ORIteck CO., LTD一般参加者
さしあたって今、他に何かはありません。
ご検討いただきありがとうございます。ORIteck CO., LTD一般参加者ありがとうございます。
円グラフコンポーネントが表示する合計値と比率が、ご教授頂いた方法(手動計算でも同じ)での結果と若干合わない点が気になります。
円グラフコンポーネントの合計値は、小数点第一位を切り上げているようですが、系列側をどの様にして計算しても合いません。ORIteck CO., LTD一般参加者画面編集は全て手動配置で自動サイズ設定は入っていない状態です。
ボタンの文字切れはフォントの違いによるもののようで、わずかに幅を広げることで全て表示されます。
テキストフィールドだけが特別のようで、必要以上(文字幅に対して1.6倍)に幅を広げないと表示しきれません。
ちなみに現在時刻は、ラベルコンポーネントを使用しています、こちらは、文字幅と同様のサイズで問題なく表示されます。このラベルコンポーネントの幅と文字が表示しきらないテキストコンポーネントは同じ幅です。
テキストフィールドの幅を広げれば解決ですので、何かわかればお願いします。Dialogフォントが論理フォントなら、Raspberry版では何の物理フォントに何処でマッピングされているのでしょうか?
MZの実使用には問題ありませんが、ご回答頂けるとありがたいです。ORIteck CO., LTD一般参加者伊予研究会様
コメントいただきありがとうございます。シリアルモニタでの操作ではスケッチ通りになること(Serial.read()とSerial.print()の関係)は確認できておりました。当方の伝達の仕方に問題があり長引いてしまったようです。結論ですが、
シリアル通信コンポーネントの属性情報設定でReadModeを0から2に変更することで解決しました。
Serial.printとSerial.println改行の有無については今回のスケッチでは関係無いようです。『F』の文字は一度しか送っていないからだと思いますが、今後は、Serial.printlnを使用したいと思います。最後に2つ質問させてください。
➀シリアルコンポーネントの属性情報ReadModeですが、Windows版MZでは『0』『2』ともに変化はありませんでした、デフォルトは『0』ですので、Raspbian版MZでは『2』に設定し使用します。ユーザー側での知識としてなにかあればお願いします。
➁シリアル通信コンポーネントはポートへの接続時のアクションとして処理完了イベントがありますが、このイベントの最初の処理にシリアル通信コンポーネントの『ポートに文字列データを出力』メソッドを使用した場合、文字列が遅れませんでした。(このトピックの環境です)これは、WindowsでもRaspbianでも同じでした。PC等の能力や通信環境によるものと考えおけばいいものでしょか?
Raspbianでは、シリアル通信コンポーネントの処理完了イベントで、いくつかのサプルーチンコンポーネントでの処理の後にシリアル通信コンポーネントの『ポートに文字列データを出力』メソッドを使用した場合も、文字列は遅れませんでした。ダイアログコンポーネントを使用しスレッドを一旦止めることが有効のようで現在は、このようにしています。ORIteck CO., LTD一般参加者すみません。スケッチのコピー&ペーストがダブっていました。ひとつ前の投稿は無視してください。
ありがとうございます。簡単に下記スケッチを作成しテストしました。
結果ですが、MZアプリかの文字列送信でArduino側のLEDが点灯することを確認しました。
Arduino側から文字を送信しているのにMZアプリでは受信されないようです。
ご確認お願いします。const int LED = 4;
void setup()
{
pinMode(LED, OUTPUT); //LED(D4ピンを出力に)
Serial.begin(115200);
delay(1000); //1秒間待つ
}void loop()
{
char start = Serial.read(); //シリアルから一文字を取得
if(start == ‘F’){
digitalWrite(LED, HIGH);
delay(2000);
}
digitalWrite(LED, LOW);
}ORIteck CO., LTD一般参加者ありがとうございます。簡単に下記スケッチを作成しテストしました。
const int LED = 4;
void setup()
{
pinMode(LED, OUTPUT); //LED(D4ピンを出力に)
Serial.begin(115200);
delay(1000); //1秒間待つ
}void loop()
{
char start = Serial.read(); //シリアルから一文字を取得
if(start == ‘F’){
digitalWrite(LED, HIGH);
delay(2000);
}
digitalWrite(LED, LOW);
}
const int LED = 4;
void setup()
{
pinMode(LED, OUTPUT); //LED(D4ピンを出力に)
Serial.begin(115200);
delay(1000); //1秒間待つ
}void loop()
{
char start = Serial.read(); //シリアルから一文字を取得
if(start == ‘F’){
digitalWrite(LED, HIGH);
delay(2000);
}
digitalWrite(LED, LOW);
}結果ですが、MZアプリかの文字列送信でArduino側のLEDが点灯することを確認しました。
Arduino側から文字を送信しているのにMZアプリでは受信されないようです。
ご確認お願いします。ORIteck CO., LTD一般参加者添付いただいたRXTXcomm.jarファイルの配置とsudoコマンドでの実行でも症状がかわりませんので、問題としている内容について説明します。
接続ボタンのアクションイベントで、シリアル通信コンポーネントのメソッド「通信速度を設定する」でArduinoのスケッチ速度に設定後、シリアル通信コンポーネントのメソッド「指定されたポートに接続する」※私の環境では/dev/ttyUSB0に接続します。
シリアル通信コンポーネントの処理完了イベントで、メッセージダイアログコンポーネントのメソッド「情報メッセージダイアログを表示する」※イベント番号0:ポートに接続したとき。この時、情報メッセージダイアログは表示されますので、ポートへの接続はできていると考えています。
ここからが問題としているところです。
送信ボタンのアクションイベントで、シリアル通信コンポーネントのメソッド「ポートに文字列データを出力する」で’F’の一文字を送信しています。Arduino側では、この文字を受信時Serial.read()に、’Ftemp,hum’の文字列を送信Serial.print()するスケッチです。これを、シリアル通信コンポーネントのデータ生成イベントで、テキストフィールドに設定しているのですが、設定(表示)されません。もう一つですが、
$ sudo /home/pi/MZPlatform/3.6/pfloader ***.mzax
このように実行した場合、エラーメッセージが表示され『バイナリファイルからのアプリケーション情報ロードに失敗しました』アプリは起動しません。
カレントディレクトリを /MZPlatformで、$sudo 3.6/pfloader ***.mzaxの実行でアプリは起動します。なにか関係がありますでしょうか?ORIteck CO., LTD一般参加者『(4)データベース接続』まで正常に動作できるようになりました。
Raspberry PiとArduino NaNoをUSB接続している環境で自作アプリのテストをしています。MZIoTtoolkit-3.6-20181219のIoTEdgeApp.mzaxをRaspberry Piで使用するイメージです。
Firmata通信コンポーネントの使用での送受信は問題ないのですが、シリアル通信コンポーネント使用時、ポートの開通はできているようなのですが送受信ができません。
Arduinoのスケッチは、シリアルポートから’F’一文字を受信したとき、”Ftemp,hum”をシリアルポートに送信するです。
void setup(){Serial.begin(115200); dalay(10);}
void loop(){
char start = Serial.read();
if(start == ‘F’){Serial.print(“Ftemp”); Serial.print(“,”); erial.print(“hum”);}
delay(100);
}Windowsでは問題ありませんが、Raspberry Piでは動作しません。
テストアプリ添付致します。添付ファイル:
ORIteck CO., LTD一般参加者アプリケーションのファイル名にスペースを入れていたのですが、スペースを無くすことで起動できました。これが問題と言うことでよろしいでしょうか?
ORIteck CO., LTD一般参加者Raspbianの変更後『(3) MZアプリケーションの実行』まで正常に動作しました。
自作のアプリケーションで(3)同様の実施をしましたが、『バイナリファイルからのアプリケーション情報ロードに失敗しました』のエラーダイアログが表示されます。
自作アプリケーションは、フレームコンポーネントだけで、.mzaxです。
アプリケーションの配置位置は、cmd.mzaxと同じ場所です。どのような問題があるのでしょうか?
-
著者投稿