1

混乱させてすみません、

実際、/dev/ttyACM0 に接続されている arduino にシリアル メッセージを送信したいのですが、このコマンドを端末に入力することで実行できます。

$ echo "Hello Arduino" > /dev/ttyACM0

そのため、そのようなコマンドを送信するには awk が必要です。

ここに私の PBH.awk ファイルがあります:

BEGIN{
    FS = "[ .]";
    RS = "\0";
    IGNORECASE = 1;
}{
    for (i=1;i<NF;i++){
        if(i == 1){
        printf("Diketahui : %s\n",$18);}
        if($i=="y" && $(i+1)=="=")
            {
                printf("     Persamaan : %s %s %s %s %s %s %s %s %s %s %s\n",$(i),$(i+1),$(i+2),$(i+3),$(i+4),$(i+5),$(i+6),$(i+7),$(i+8),$(i+9),$(i+10))
                inisialisasi = "stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts"
                kirim = "echo \"Field2 contains: $2""\" > /dev/ttyACM0"
                print | inisialisasi
                print | kirim
            }
    }

}

soalPBH.txt は次のとおりです。

Persamaan gelombang berjalan pada seutas tali dinyatakan dengan y = 0,02 sin (20 π t – 0,2 π x). Jika x dan y dalam cm dan t dalam sekon, tentukan:

次に、 awk を実行します

$ awk -f PBH.awk soalPBH.txt

私のプログラムは、フィールド番号 2 のテキストを送信しません。何か問題がありますか??

kirim = "echo \"Field2 contains: $2""\" > /dev/ttyACM0"
4

1 に答える 1

0

あなたがやろうとしていることは非常に不明確です。これでしょうか:

$ cat file
field1 field2 field3

$ awk '{printf "echo \"Hello Arduino %s\" > /dev/ttyACM0\n", $2}' file
echo "Hello Arduino field2" > /dev/ttyACM0

そうでない場合は、質問を明確にし、明確なサンプル入力と予想される出力を提供してください。

更新された質問を考えて、引用符を移動して、 $2 が引用符の内側ではなく外側になるようにし"$2ます$2"

kirim = "echo \"Field2 contains: " $2 "\" > /dev/ttyACM0"

それでも問題が解決しない場合はお知らせください。

于 2013-07-16T19:47:24.577 に答える