iT邦幫忙

0

C# 主控台應用程式 擷取

大家好, 本魯小弟我只會初階MATLAB, 最近為了論文開始學C#, 盼各位大大指教
問題是這樣, 我有個力感測器的外部程式(開起來像主控台應用程式, 黑底白字那種)
它每一行都會Console.Writeline()六個數字, 並且不斷更新
現在我想寫一個程式隨時擷取外部程式的最後一行數字, 過程中外部程式不能關
, 而我每次擷取都必須是當下外部程式中最新的那行數字
請各位大大教教我 pls. 由衷感謝

P.S. 如果對於我描述的外部程式感到難懂的話, 以下程式可以呈現類似結果
int i = 1;
while( i>=1 )
{
Console.WriteLine(i);
i++;
}
Console.ReadLine();

暐翰 iT邦大師 1 級 ‧ 2019-01-18 09:00:48 檢舉
力感測器,不管使用PLC 或是其他語言編寫
都要看對方有沒有提供的API接口,讓你可以串接獲取資料

要不然是沒辦法的
youarefat iT邦新手 5 級 ‧ 2019-01-18 16:45:13 檢舉
問題不是在力感測器有沒有API吧?
問題已經被簡化成,如何把一個程式的輸出變為另一個程式的輸入吧
fillano iT邦超人 1 級 ‧ 2019-01-19 10:15:46 檢舉
https://social.msdn.microsoft.com/Forums/en-US/8d6cebfc-9b8b-4667-85b5-2b92105cd0b7/read-output-of-a-cmd-process?forum=csharplanguage

從這裡開始吧
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
JamesDoge
iT邦高手 1 級 ‧ 2023-01-27 04:12:14

您可以使用 System.Diagnostics 類別中的 Process 類別來擷取外部程式的輸出。

using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        // 啟動外部程式
        Process process = new Process();
        process.StartInfo.FileName = "外部程式路徑";
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.UseShellExecute = false;
        process.Start();

        // 每隔一段時間擷取最新輸出
        while (true)
        {
            // 等待一段時間
            System.Threading.Thread.Sleep(1000);

            // 擷取最新輸出
            string output = process.StandardOutput.ReadToEnd();
            string[] lines = output.Split('\n');
            string lastLine = lines[lines.Length - 2];
            Console.WriteLine("最新輸出: " + lastLine);
        }
    }
}

我要發表回答

立即登入回答