2016-08-16 3 views
0

Arduinoから特定の文字列または文字が送信されたときにシステムをシャットダウンするプログラムを作成しようとしています。私がプログラムをデバッグしてArduinoから文字列 "S"を送ると、コンソールアプリケーションは単に出力なしで終了します。Visual Studio 2013とArduinoシリアル/ COMポートを使用してWindows 7をC#でシャットダウン

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.IO.Ports; 
using System.Diagnostics; 

namespace Arduino_Test 
{ 
class Program 
    { 
    static void Main(string[] args) 
     { 
     SerialPort myport = new SerialPort(); 
     myport.BaudRate = 9600; 
     myport.PortName = "COM5"; 
     myport.Open(); 

      string data_rx = myport.ReadLine(); 
      string s = "S"; 
      if(data_rx == s) 
      { 
       Console.WriteLine(data_rx); 
       var psi = new ProcessStartInfo("shutdown", "/s /f /t 0"); 
       psi.CreateNoWindow = true; 
       psi.UseShellExecute = false; 
       Process.Start(psi); 
      } 
     } 
    } 
} 

if文に何か間違っていると思われます。さらに、私はVisual Studio 2013に関する助けが必要です。私はC#とアプリケーションには慣れていません。私のプロジェクトはコンソールアプリケーションです。同じコードを使用してWindowsフォームアプリケーションを作成することは可能ですか?私はこの分野で経験があり、あなたの忍耐は高く評価されています。

+0

あなたのプログラムは、任意のデータを受信した後、それはあなたが(もし下、あなたのケースで)あなたのコードに達するかどうかを確認するためにVisual Studioでブレークポイントを作る、必ず何か – BugFinder

+0

を送信するために..あなたが許可されていませんでした終了します –

+0

データを受信した後で終了する方法を教えてください。 –

答えて

0

新しい端末状態をいくつか定義したいが、永遠に実行するべきであるふりをする。そのような場合は、読み取りコードをループに入れてください。

while(true) { 
     string data_rx = myport.ReadLine(); 
     string s = "S"; 
     if(data_rx == s) 
     { 
      Console.WriteLine(data_rx); 
      var psi = new ProcessStartInfo("shutdown", "/s /f /t 0"); 
      psi.CreateNoWindow = true; 
      psi.UseShellExecute = false; 
      Process.Start(psi); 
     } 
} 
+0

これはうまくいくようですが、私のif文には上記の私の答え/応答に記述されているように問題はまだあります。 –

+0

if文にブレークポイントを置くと、シャットダウンシグナルが送信されたときの値はどうなりますか? – Tim

関連する問題