私は処理とシリアル通信に不慣れで、私の問題は非常に初歩的なようです。Processing から Arduino にデータを送信しようとしていますが、変換中に何かが失われるようです。
Arduino では、この非常に単純なスケッチを実行しています。
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available() > 0) Serial.println(Serial.read());
}
シリアルからバイトを読み取り、すぐに書き戻して、何が起こっているかを確認できるようにすることを目的としています。付属のシリアル モニタでこれをテストすると、期待どおりに動作します。「0」と入力すると「48」が返されます。ここまでは順調ですね。
この処理スケッチを実行すると、問題が発生し始めます。
import processing.serial.*;
Serial myPort;
void setup()
{
//frameRate(10);
myPort = new Serial(this, Serial.list()[4], 9600);
}
void draw()
{
myPort.write("0");
}
このコードは、デフォルトのフレーム レートであることを理解しているため、1 秒あたり 10 エントリのレートで「48」のエンドレス ストリームを返すことを期待します。実際に何が起こるかは、次のようなものです。
48
48
488
48
48
48
48
48
48
48
48
48
48
488
48
48
48
10 バイトごとに (ギブまたはテイク数)、めちゃくちゃになるという良い変化があるようです。"48" の代わりに、" "、"488"、"4848"、"488" のようなものが返されます。さらに興味深いのは、frameRate(10); のコメントを外した場合です。10 から 10 までの fps を設定しているので、Processing スクリプトの次の行には何も起こらないと思います。代わりに、次のようなものを見始めます。
4
44
4848844
444448444844
4
44444444
844
444
844444
8
88
8
4488
84
48
4448444844
444
つまり、基本的に数字はもはや理にかなっています。
問題をこのシリアル通信に絞り込むのにかなりの時間がかかり、関連するトピックについて数時間グーグルで検索しても、何が起こっているのかについてのヒントは得られませんでした. さらに読むことや試してみることへの指針は大歓迎です。
今日ダウンロードした最新バージョンの Processing を使用しています。私のシステムは、すべてのアップデートがインストールされた Mountain Lion を実行している MBP です。