2014-07-12 32 views
0

我已經創建了一個批處理文件來配置車輛控制器上的多個設置。通常我使用專門構建的程序來完成配置,但在這種情況下,因爲有幾種配置需要自動執行此過程。 因此,我使用超級終端來捕獲從專用程序通過串行端口發送到控制器的每個配置的數據/命令。 然後我創建了一個批處理文件,其中包含用超級終端捕獲的數據/命令。當批處理文件運行時,它應該在車輛控制器上自動執行每個配置。批處理文件不適用於所有命令

我發現批處理文件可以用於某些配置,但不能用於其他配置。

例如下面的配置沒有問題:

以下是我在超級終端看到的。

這是來自超級終端的日誌。

這裏是批處理代碼與數據從超級日誌

@echo off 
Echo Enter the # for your com port (typically 1) 
set /p com= 
@echo on 
mode COM%com% BAUD=38400 PARITY=N DATA=8 
set /p x="¾@gms: 0 /¾@ gms¡" <nul >\\.\COM%com% 
timeout /t 1 
set /p x="¾@gms: 0 /¾@ gms¡" <nul >\\.\COM%com% 
timeout /t 2 

pause 
exit 

這裏是運行命令

所以上面的命令運行良好後輸出。

但是,當我嘗試做如下配置它不工作:

以下是我在超級終端看到的。

這是來自超級終端的日誌。

這裏是批處理代碼從超級日誌

@echo off 
Echo Enter the # for your com port (typically 1) 
set /p com= 
@echo on 
mode COM%com% BAUD=38400 PARITY=N DATA=8 
set /p x="¾@swav: 1«¾@ swav" <nul >\\.\COM%com% 
timeout /t 1 
set /p x="¾@swav: 1«¾@ swav" <nul >\\.\COM%com% 
timeout /t 2 

pause 
exit 

這裏的數據是運行命令

您可以在超級截圖中看到該數據開始一個新的生產線後的輸出。我認爲它在批處理文件命令中做了同樣的事情,結果它弄亂了命令。 有沒有一種方法可以調整我的批處理命令以補償「配置命令」開始一個新行?


我現在已經嘗試基於@foxidrive評論如下代碼:

@Echo Enter the # for your com port (typically 1) 
set /p com= 
mode COM%com% BAUD=38400 PARITY=N DATA=8 
set /p "x=¾@swav: 1«¾@ swav"<nul >COM%com% 
timeout /t 1 
set /p "x=¾@swav: 1«¾@ swav"<nul >COM%com% 
timeout /t 2 

pause 
exit 

我得到以下輸出:

Enter the # for your com port (typically 1) 
1 

Status for device COM1: 
----------------------- 
    Baud:   38400 
    Parity:   None 
    Data Bits:  8 
    Stop Bits:  1 
    Timeout:   ON 
    XON/XOFF:  OFF 
    CTS handshaking: OFF 
    DSR handshaking: OFF 
    DSR sensitivity: OFF 
    DTR circuit:  ON 
    RTS circuit:  HANDSHAKE 

►¥@¶☺swav: 1 

所以命令仍無法正常完成。

任何想法?

+0

@foxidrive我增加了結果到我上面的第一條評論(見實線後面)。該命令仍然失敗 - 你有任何其他建議嗎? – batchnewbie

+0

您的設備可能啓用本地回顯。你可以向串行設備發出什麼簡單的ascii命令來證明它正在工作?一旦你確定設備正在接收你的命令,那麼你可以嘗試更奇特的命令字符串。您也可以嘗試'com%com%:'後面的':'來使用不同的COM端口使用模式。 – foxidrive

+0

@foxidrive我可以確認我在第一篇文章中提到的第一個代碼在設備上正常工作。這是第二個存在問題的代碼。你對其他「奇特的命令串」有什麼建議?請注意我對批處理命令非常陌生,所以如果你能在你的評論中提供額外的細節,那將非常棒。 – batchnewbie

回答

0

set/p對它可以使用的字符集有一些限制。
這是做你所需要的?

@echo off 
Echo Enter the # for your com port (typically 1) 
set /p com= 
mode COM%com% BAUD=38400 PARITY=N DATA=8 
set /p "x=¾@gms: 0 /¾@ gms¡"<nul >COM%com% 
timeout /t 1 
set /p "x=¾@gms: 0 /¾@ gms¡"<nul >COM%com% 
timeout /t 2 

pause 
exit 
0

如果foxidrives答案不工作(通常他們這樣做),你可以解決set /p限制複製您的數據文件,而是用set /p寫做:

copy /b config1.bin>COM%com%: