2012-04-17 41 views
2

我有一個Netduino,它目前正在向系統輸出加速計數據。 Diagnostics.Debug窗口。我正在等待郵件中的USB-> 232轉換器通過串口將設備中的數據正確地傳輸到我的應用程序中,但我想知道如果有人知道是否可以從數據中讀取數據調試窗口回到我的應用程序?閱讀System.Diagnostics.Debug窗口

編輯 - 解決方案: 我發佈這裏爲任何人想要我的解決方案。我原本以爲Nuf的答案是「寫入System.Diagnostics.Debug的數據可以用TraceListener類捕獲,MSDN有簡短的教程如何設置它。」但是我發現Listener只能從它自己的應用程序中獲取數據。由於我使用的是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

寫入System.Diagnostics.Debug的數據可以用TraceListener類捕獲。 MSDN有簡短的tutorial如何設置它。

+0

謝謝!完美的作品。 – Axis 2012-04-17 20:11:27

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());