如何通过批处理文件向COM端口发送单个数字指令?
问题根本原因
批处理语法中,0-9紧跟>符号时,会被系统识别为标准IO句柄重定向操作,而不是作为输出内容的一部分。你写的echo 4>\\.\%CNum%实际含义是「把句柄4的输出重定向到COM端口」,而不是「输出字符4到COM端口」,所以数字内容根本没有被发送,只有字母没有这个歧义所以可以正常发送。
可行解决方案
方法1:调整重定向符号和数字的位置
把重定向符号放在echo和输出内容之间,避免数字和>直接相邻,改造成本最低,示例代码如下:
Set "CNum=COM5" echo m>\\.\%CNum% >\\.\%CNum% echo 4 >\\.\%CNum% echo 4 echo W>\\.\%CNum% echo P>\\.\%CNum%
方法2:转义或包裹输出内容
也可以用插入符^转义数字,或者用括号包裹整段echo语句,规避句柄识别逻辑:
:: 转义写法 echo ^4>\\.\%CNum% :: 括号包裹写法 (echo 4)>\\.\%CNum%
可选优化:预先配置COM端口参数
如果调整写法后仍偶发发送异常,可以先通过mode命令配置COM端口参数和Bus Pirate匹配,避免参数不匹配导致的额外问题:
:: 请根据你实际使用的Bus Pirate参数调整,示例为115200波特率、8位数据、无校验、1停止位 mode %CNum% BAUD=115200 PARITY=N DATA=8 STOP=1
内容的提问来源于stack exchange,提问作者NFM
相关产品推荐
相关产品推荐

