저는 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를 준비하는 데 충분한 시간이 있도록 해당 명령을 추가해야 합니다 .
이 작업을 더 빠르게 수행하기 위해 컨트롤러 호출 사이에 파일 설명자 구성을 활성 상태로 유지하는 방법을 알고 싶습니다.