2011-12-17 3 views
1

MacとUbuntuのインストールで次のコードを実行すると、私は奇妙な機能を実行しています。Ruby - MacとUbuntuで異なるコードを実行する

私のコードは、クライアントが接続されている(接続に成功した)かどうかを確認し、Rubyコードを使用してt.putsを介してArduinoにコマンドを送信し、socket gem Arduinoソフトウェアを使ってシリアル出力に送るものは何でも。それは簡単な部分です。

次は私のシリアル出力のMacに正しい以下、実行されます。同じコードは、Ubuntuの上で実行されたときかのように、私は、シリアル出力に次のように取得する、しかし

{power, tv} # t.puts "{power, tv}" 

をそれは再び接続しようとしています。

Connecting... # t.puts "{power, tv}" # Connecting... (text is actually coming from Arduino not the below code). 

私は二重の私のArduino、IP、コードおよびポートは、(それが接続しているものである)正しいことを確認している:それはMac上で行い、上記シリアル出力を与えるものではありません。 MacとUbuntuで出力が異なる理由はわかりません。

このような状況が発生する理由と、次のコードをすべての環境で適切に送信するように変更できるかどうかは、どのような理由がありますか?

#!/usr/bin/ruby 

require "socket" 

#Thread.new { 

    begin 
    puts "Connecting to 10.1.1.45..." 
    t = TCPSocket.new("10.1.1.45", 80) 
    rescue 
    puts "error : #{$!}" 
    else 
    t.print "{power,tv}" 
    t.close 
    puts "Sent command..." 
    end 

#} 

に注意してください、私は10.1.1.45だけで罰金(私はできPINGなど)ので、実際のArduinoのコードに接続することができますが、私は差し込むことによってこれをテストしていますので、ここでは私の知る限りでは、故障ではなく、それをMacとUbuntuに組み込み、上の全く同じコードを実行します。お気軽に私に何か質問してください。私は私の方法で私を助けるためにできるだけ詳細にそれらに答えることをうれしく思うでしょう。

ありがとうございます。

答えて

2

ルビーputsは、IOStreamオブジェクトの単なるメソッドであり、オブジェクトはわかっていなくても変更できます。あなたはそれがあなたの問題を解決するかどうかを確認するために、これをしようとする場合があります

begin 
    STDOUT.puts "Connecting..." 
    t = TCPSocket.new("10.1.1.45", 80) 
rescue 
    STDOUT.puts "error : #{$!}" 
else 
    t.print "{power,tv}" 
    t.close 
    STDOUT.puts "Sent command..." 
end 

それはputsがあなたの新しいソケットで呼び出されていた可能性があります。

関連する問題