私はArduinoを持っていて、Rails APIを介してテキストメッセージを送信したいと思います。したがって、端末から直接Arduinoポートのファイル記述子を生成するのと同じくらい簡単です。
exec 3<> /dev/ttyACM0
その後、次のメッセージを送信できます。
echo "Beautiful blue sky floating endlessly in love making the clouds sigh.">&3
これで、システムアプローチを使用してRails APIにこのアイデアを実装しようとしています。
API/config/application.rb
class Application < Rails::Application
...
# This is for declaring the file descriptor when the rails server is on.
system 'exec 3<> /dev/ttyACM0;'
end
アプリケーション/コントローラ/message_controller.rb
class MessageController < ApplicationController
def send
system "echo \"#{params[:message]}\">&3;"
render json: '', status: :ok
end
end
...しかし、sh: 3: Bad file descriptor
端末にメッセージが表示されます。
コントローラのシステム実行を次のように変更する作業はほとんど行われませんでした。
system "exec 3<> /dev/ttyACM0; sleep 2; echo \"#{params[:message]}\">&3;"
sleep
ただし、入力データをキャプチャするためにArduinoを準備するのに十分な時間があるように、適切なコマンドを追加する必要があります。
このタスクをより迅速に実行するために、コントローラ呼び出し間でファイル記述子設定をアクティブに保つ方法を知りたいです。