2

Netduinoがあり、現在、加速度計のデータをシステムに出力しています。Diagnostics.Debug ウィンドウ。メールでUSB-> 232コンバーターを待って、シリアルポートを介してデバイスからアプリにデータを適切に取得しますが、簡単なテストの目的で、データを読み取ることができるかどうかを誰かが知っているかどうか疑問に思っていましたデバッグ ウィンドウをアプリに戻しますか?

編集 - 解決策: 私の解決策が必要な人のために、ここに投稿しています。私は当初、Nufの答えが「System.Diagnostics.Debugに書き込まれたデータはTraceListenerクラスでキャプチャできます。MSDNにはセットアップ方法の短いチュートリアルがあります。」しかし、リスナーは独自のアプリケーション内からのみデータを取得できることがわかりました。私は Netduino を使用していたため、デバッグ出力は別のプログラムからのものであり、トレース リスナーがそれを読み取ることができませんでした。そこで、出力ボックスのテキストを直接読み取る方法を見つけました。

MSDN のコードに基づく: プロジェクトへの 3 つの参照が必要です。これらは、.Net 参照タブ (EnvDTE、EnvDTE80、および拡張性) にあります。

using EnvDTE80;
using EnvDTE;
using Extensibility;

        public static string ReadDebugBox()
        {
            EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.10.0");
            string data = "";
            OutputWindow ow = dte.ToolWindows.OutputWindow;
            OutputWindowPane owP;

            TextDocument owPTxtDoc;
            EditPoint2 strtPt;

            owP = ow.OutputWindowPanes.Item("Debug");
            owP.Activate();
            owPTxtDoc = owP.TextDocument;

            strtPt = (EditPoint2)owPTxtDoc.StartPoint.CreateEditPoint();
            return strtPt.GetText(owPTxtDoc.EndPoint);
        }



            public static void ClearDebugBox()
            {
                EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.10.0");
                OutputWindow ow = dte.ToolWindows.OutputWindow;
                OutputWindowPane owP;

                TextDocument owPTxtDoc;
                EditPoint2 strtPt;

                owP = ow.OutputWindowPanes.Item("Debug");
                owP.Activate();

                owP.Clear();
            }

もっと良い方法があるかもしれませんが、これは私にとってうまくいった方法の1つに過ぎないので、共有したいと思いました.

4

2 に答える 2

1

System.Diagnostics.Debug に書き込まれたデータは、TraceListenerクラスでキャプチャできます。MSDN には、セットアップ方法に関する短いチュートリアルがあります。

于 2012-04-17T20:03:59.537 に答える
1

これを設定するには 2 つの方法があります。1 つの方法は、app.config ファイルでこれを宣言的に設定することです。これには、変更が必要なときにアプリケーションを再コンパイルする必要がないなど、多くの利点があります。

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="configConsoleListener" 
          type="System.Diagnostics.ConsoleTraceListener" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

または、コード内でこれを実行して、デバッグ トレースをアプリケーションのコンソール ウィンドウに出力することもできます。

Debug.Listeners.Add(new ConsoleTraceListener());
于 2012-04-17T20:17:16.283 に答える