批处理文件未发送串行命令

3

我有一个批处理文件,想要向串口COM1发送指令。我有以下代码,可以看到它成功设置了端口。但是它在那里停止了,在设置完串口后没有发送任何命令。

@ echo off
color b0
cls
echo.
echo.      
echo. Enter IP address of the CSR on the site.
echo. Example: 11.152.34.82
set /p IP="IP Address: "
for /F "tokens=1,2,3,4 delims=." %%a in ("%IP%") do (
echo %%a, %%b, %%c, %%d
set last=%%d
set first=%%a
set second=%%b
set third=%%c
)
pause
cls
echo. select the technology you are trying to restore
echo. 1: AWS
echo. 2: PCS
echo. 3: LTE 1
echo. 4: LTE 2
set /p tech="Enter number: "
if "%tech%"=="1" goto AWS 
if "%tech%"=="2" goto PCS
if "%tech%"=="3" goto LTE1
if "%tech%"=="4" goto LTE2
echo. Not found
goto commonexit

:AWS
set /a z=%last% - 2
set /a y=%last% - 25
goto UMTSScript

:PCS
set /a z=%last% -3
set /a y=%last% - 24
goto UMTSScript

:UMTSScript
mode COM1 BAUD=9600 Parity=n DATA=8
echo. command1 > COM1
echo. command2 > COM1

也许命令无法理解是因为它前面有一个空格?尝试使用echo command1 > COM1而不是echo. - soja
尝试一下这个:set /p "=COMMAND1"<nul>\\.\COM1 - Squashman
请阅读此帮助主题:如何创建一个简洁、完整和可验证的示例 - aschipfl
2个回答

0

在脚本的开头,第一行:

@echo off

那么我会尝试:

@echo command1>COM1
@echo command2>COM1

如果那不起作用,我会尝试:
@echo command1|COM1
@echo command2|COM1

0

通过这种方式重定向到COM端口应该可以工作。 脚本运行后mode COM1 /status的输出是什么?是否出现了意外的握手? 同时,请注意cmd.exe本身的ANSI / Unicode模式…在这里,您可以看到Unicode版本创建的文本文件大小是ANSI版本的两倍…也许您正在传输大量您没有意识到的NUL字符 :)

    C:\>cmd /u /c "(echo 12345678>test.txt) && (for %a in (test.txt) do @echo %~za bytes)"
    20 bytes
    
    C:\>cmd /a /c "(echo 12345678>test.txt) && (for %a in (test.txt) do @echo %~za bytes)"
    10 bytes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接