2020年4月24日 星期五

檢查 Pi 系列單片機是否正常運作

將下列文字複製到 check-pi.bat

===================從下列起==================
@Echo off
del act.txt
del na.txt
echo 192.168.1.104 APRX >> act.txt
echo 192.168.1.105 Zero >> act.txt
echo 192.168.1.106 One >> act.txt
echo 192.168.1.107 Zero(白) >> act.txt
echo 192.168.1.108 mail >> act.txt
echo 192.168.1.104 APRX >> na.txt
echo 192.168.1.105 Zero >> na.txt
echo 192.168.1.106 One >> na.txt
echo 192.168.1.107 Zero(白) >> na.txt
echo 192.168.1.108 mail >> na.txt
echo ==========正常連線的設備========== >> act.txt
echo ==========斷線========== >> na.txt
@for /l %%i in (105,1,108) do @ping -n 2 -w 40 192.168.1.%%i& if errorlevel 1 (echo 192.168.1.%%i>>na.txt) else (echo 192.168.1.%%i>>act.txt)
cls
Echo 完成!!
@echo on
notepad act.txt & notepad na.txt

===================自上列起==================



語法解釋
@Echo off  關閉螢幕顯示
del act.txt    刪除舊的 act.txt
del na.txt    刪除舊的 na.txt

下列是把機器型號輸入到 act.txt 的標頭(也就是設備正常連線的文件)
-------------------------------------------------------------------------------
echo 192.168.1.104 APRX >> act.txt
echo 192.168.1.105 Zero >> act.txt
echo 192.168.1.106 One >> act.txt
echo 192.168.1.107 Zero(白) >> act.txt
echo 192.168.1.108 mail >> act.txt
echo ==========正常連線的設備========== >> act.txt
--------------------------------------------------------------------------------

正確輸入後會變成這樣
-----------------------------------------------------------------
192.168.1.104 APRX
192.168.1.105 Zero
192.168.1.106 One
192.168.1.107 Zero(白)
192.168.1.108 mail
==========正常連線的設備==========
-----------------------------------------------------------------

下列是把機器型號輸入到 na.txt 的標頭(也就是設備無法連線的文件)
----------------------------------------------------------------------------------
echo 192.168.1.104 APRX >> na.txt
echo 192.168.1.105 Zero >> na.txt
echo 192.168.1.106 One >> na.txt
echo 192.168.1.107 Zero(白) >> na.txt
echo 192.168.1.108 mail >> na.txt
echo ==========斷線========== >> na.txt
------------------------------------------------------------------------------------

下列是程式語法

@for /l %%i in (105,1,108) do @ping -n 2 -w 40 192.168.1.%%i& if errorlevel 1 (echo 192.168.1.%%i>>na.txt) else (echo 192.168.1.%%i>>act.txt)

簡單解釋一下,(105,1,108)  就是變數(%) 裡面要代入的數字,其中指定範圍為 105 到 108 ,間格是1,也就是會輸入 105,106,107,108

do @ping  -n 2 -w 40 192.168.1.%%i 就是要執行的語法,在bat(批次檔)中要使用 %%i
如果再 cmd 輸入,使用 %i 即可

errorlevel 1 (echo 192.168.1.%%i>>na.txt) else (echo 192.168.1.%%i>>act.txt)

這一段就要自 errorlevel 說起,他是一個特殊變數,功能是傳回剛剛執行的程式最後的執行代碼,很繞口令對吧?

簡單來說,如果你在CMD中下以下的指令

ping 168.95.1.1

應該會回傳這樣的訊息

--------------------------------------------------------------------------------
Ping 168.95.1.1 (使用 32 位元組的資料):
回覆自 168.95.1.1: 位元組=32 時間=9ms TTL=250
回覆自 168.95.1.1: 位元組=32 時間=14ms TTL=250
回覆自 168.95.1.1: 位元組=32 時間=20ms TTL=250
回覆自 168.95.1.1: 位元組=32 時間=14ms TTL=250

168.95.1.1 的 Ping 統計資料:
    封包: 已傳送 = 4,已收到 = 4, 已遺失 = 0 (0% 遺失),
大約的來回時間 (毫秒):
    最小值 = 9ms,最大值 = 20ms,平均 = 14ms
---------------------------------------------------------------------------------
然後你在下
echo %erroelevel%

他會出現(0)這個數字

反之,如果你去ping 一個不存在(或是無法連線)的設備
他會出現(1)這個數字,他就是要讓我們用來判定的!

errorlevel 1 (echo 192.168.1.%%i>>na.txt) else (echo 192.168.1.%%i>>act.txt)
字面意思就是 我要ping 192.168.1.%%
如果有設備可以ping到
把設備ip輸入到 act.txt
如果沒有(else),則輸入到 na.txt

> 跟 >> 都代表輸入的意思
不過 > 會把檔案內容清空,只留最後的訊息
而使用 >> 則不會把檔案清空,訊息可以累加

cls              清除螢幕
Echo 完成!!   在螢幕顯示已經完成
@echo on             開啟螢幕顯示
notepad act.txt & notepad na.txt       使用記事本開啟 act.txt 與 na.txt


act.txt 範本如下
-------------------------
192.168.1.104 APRX
192.168.1.105 Zero
192.168.1.106 One
192.168.1.107 Zero(白)
192.168.1.108 mail
==========正常連線的設備==========
192.168.1.105
192.168.1.106
192.168.1.107
192.168.1.108
--------------------------------

na.txt 範本如下
------------------------
192.168.1.104 APRX
192.168.1.105 Zero
192.168.1.106 One
192.168.1.107 Zero(白)
192.168.1.108 mail
==========斷線==========
----------------------------------------


範本僅供比對,程式正常的話範本是不需要輸入的

沒有留言:

張貼留言

WSJT-X

轉載FB ============== 大家好,又是我BU2EL! 今天不是來干擾的,是要來跟大家分享WSJT-X兩件事