Tty

如何使用 jpnevulator 擷取和記錄應用程序和硬體串列埠之間的串列流量?

  • October 30, 2018

好的,我已經在Google上搜尋了幾個小時,所以我顯然無法理解關於這個主題的各種問題的答案。我希望,通過以更具體的方式再次提出問題,我將能夠得到我能理解的答案。

我有一些在 linux 中執行的應用程序與連接到串列埠的外部設備進行通信。我希望能夠擷取並記錄在應用程序和設備之間雙向發送的數據,並在文件中每一行的開頭帶有時間戳。

作為測試案例,我使用 minicom 作為我要監控的應用程序,通過零調製解調器電纜連接到另一台也執行 minicom 的電腦。我已經確認,如果我在其中一台電腦上鍵入字元,字元就會出現在另一台電腦的終端中。到現在為止還挺好。

然後我發現了這個問題:

如何監控串口流量?

在回答這個問題時,建議使用 jpnevulator 程序。但是,在查看手冊頁時,我無法找出使用 jpnevulator 來獲得我想要的東西的正確方法。這是我試圖做的:

首先,我打開一個終端視窗並輸入以下命令:

$jpnevulator --tty=/dev/ttyS0 --pty --pass --read --ascii --timing-print --file=serial.log

我看到了輸出: jpnevulator: slave pts device is /dev/pts/18

然後我打開另一個終端視窗並輸入以下命令:

minicom -D/dev/pts/18 -b115200

Minicom 毫無怨言地打開了。

但是,當我在任一終端(本地和遠端)中輸入字元時,任一終端都沒有出現任何內容。jpnevulator 僅記錄寫入 /dev/pts/18 的數據。

我的期望是 jpnevulator :

  1. 從 /dev/pts/18 讀取數據並將此數據“傳遞”到 /dev/ttyS0,同時將此數據寫入指定文件。
  2. 從 /dev/ttyS0 讀取數據並將此數據“傳遞”到 /dev/pts/18,同時將此數據寫入指定文件。

我知道常見問題解答中說“Jpnevulator 從未建構為位於核心和您的應用程序之間。對不起。”

然而,同樣的問題在第二段中指出:“現在幸運的是,有一個好消息:不久前,Eric Shattow 建議使用偽終端設備位於核心和您的應用程序之間。” 這是我試圖採取的方法,但我沒有成功。我錯過了什麼?

提前感謝大家。

乾杯,艾倫

ps 我成功地能夠使用我引用的現有問題中提到的 socat 方法擷取來回流量,但這種方法沒有提供任何為流量添加時間戳的方法。我希望 jpnevulator 會為我提供這個。

我已經回答了我自己的問題:我找到了另一個可以更好地提供我想要的實用程序:

https://github.com/geoffmeyers/interceptty

該軟體包包括一個 perl 腳本,該腳本對攔截的輸出進行後處理以提供“漂亮”的輸出。我發現很容易修改腳本來為每一行添加一個時間戳。

感謝 Geoff Meyers 提供了這個。

艾倫

引用自:https://unix.stackexchange.com/questions/478528