2017-05-31 6 views
-1

私はコンパートでリッスンしたいが、10分ごとに "PING"という単語をそのコンフォートに送る。私は問題なく聞くことができますが、私は同じオープンポートで送信するタイマーを取得する方法を把握することはできません。タイマーイベントを呼び出してcomポートに書き込むコードを書き込もうとすると、エラーが表示されます。 '名前' myport 'が現在のコンテキストに存在しません。なぜ私はエラーが発生しているのか知っていますが、タイマーを使用して同じcomportを開いているコードをどのようにフォーマットするのか分かりません。ここでタイマーを使ってシリアルポートCにデータを送る#

はコードです:

using System; 
using System.IO.Ports; 
using System.Timers; 

namespace ConsoleApplication1 
{ 
class Program 
{ 
    //public static void Main() 
    static void Main(string[] args) 

    { 
     Timer aTimer = new Timer(); 
     aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 
     aTimer.Interval = 5000; 
     aTimer.Enabled = true; 


     { 
      SerialPort myport = new SerialPort(); //Setting up the Serial 
Port 
      myport.BaudRate = 9600; 
      myport.PortName = "COM4"; 
      myport.Open(); 

      if (myport.IsOpen) 
      { 
       myport.WriteLine("    Your are Now Connected to 
GDC-IoT Number 1"); 
       myport.WriteLine("   ALETS - Actionable Law Enforcment 
Technology Software"); 
      } 


      while (true) 
      { 


       string data_rx = myport.ReadLine();  // Read Serial Data 
       Console.WriteLine(data_rx); 


      } 
     } 
    } 

       public static void OnTimedEvent(object source, 
ElapsedEventArgs e) 
    { 
     Console.WriteLine("Hello World!"); 
     myport.WriteLine("PING"); 
    } 
} 
} 
+0

私はPeter Dunihoの質問を見て、どのように私の複製があるかわかりません。あなたは私の投稿を更新できるように、重複しているかもしれない質問に私を指摘できますか? –

答えて

0

あなたはMain関数内で定義されたmyportを持っているので、それがその関数に対してローカルです。メソッドの外でクラスレベルで宣言して、すべてのメソッドからアクセスできるようにしてください。

class Program 
{ 
    private static SerialPort myPort; 

    static void Main(string[] args) 
    { 
     var timer = new Timer { Interval = 5000, Enabled = true }; 
     timer.Elapsed += OnTimedEvent; 

     myPort = new SerialPort { BaudRate = 9600, PortName = "COM4" }; 
     myPort.Open(); 

     if (myPort.IsOpen) 
     { 
      myPort.WriteLine("You are are now connected to GDC-IoT Number 1"); 
      myPort.WriteLine("ALETS - Actionable Law Enforcment Technology Software"); 
     } 

     // Listen to serial port 
     while (true) 
     { 
      Console.WriteLine(myPort.ReadLine()); 
     } 
    } 

    public static void OnTimedEvent(object source, ElapsedEventArgs e) 
    { 
     if (myPort == null) 
     { 
      Console.WriteLine("Port has not yet been assigned"); 
     } 
     else if (!myPort.IsOpen) 
     { 
      Console.WriteLine("Port is not open"); 
     } 
     else 
     { 
      Console.WriteLine("Sending ping..."); 
      myPort.WriteLine("PING"); 
     } 
    } 
} 
+0

あなたはロック!ありがとう。私はすべての変数にアクセス可能にする方法を理解できませんでしたが、うまくいきました!とても有難い! –

関連する問題