使用Windows终端连接COM端口

8

有没有办法使用Windows终端(Windows 8及以上版本)内置命令或批处理程序连接和通信COM端口(例如COM4)?

MODE COM4:9600,N,8,1,P

上述命令显示了COM4的配置。但是我如何发送或接收数据?

你应该看一下这个 - Dennis van Gils
2个回答

10

使用Windows PowerShell

向串口写入数据

PS> [System.IO.Ports.SerialPort]::getportnames()
PS> $port= new-Object System.IO.Ports.SerialPort COM4,9600,None,8,one
PS> $port.open()
PS> $port.WriteLine(“Hello world”)
PS> $port.Close()

从串口读取数据

PS> $port= new-Object System.IO.Ports.SerialPort COM4,9600,None,8,one
PS> $port.Open()
PS> $port.ReadLine()

2
我的PowerShell控制台一直在等待。我想,这是因为串口中的数据没有行尾字符。 - Piroxiljin
1
如果您连接的设备不发送换行字符,我建议使用.ReadExisting()。当然,如果它发送的是除文本以外的内容,您将需要一种更复杂的读取方法。 - MrPaulch
目前只有使用最新的Powershell才能实现这一点。除非微软决定支持将输出重定向到端口,而不仅仅是(STDIN/ERR等)。 - not2qubit
有关在PowerShell中完全使用COM的说明,请参见我的帖子 - not2qubit

2

识别已连接的COM端口:

mode
powershell -c "[System.IO.Ports.SerialPort]::getportnames()"

发送带有CR/LF的消息:

echo hello >COM4

发送文件:
type file.txt >COM4

读取COM端口:

type COM4

更好的交互方式是使用 Putty 或在 WSL 1 中使用 minicom

这个不起作用。使用>COM4会将数据写入名为COM4的文件。 - not2qubit
@not2qubit 你是用CMD.EXE还是POWERSHELL?只有这些Shell可能会对这些名称做特殊处理。如果你使用Bash或其他的话... - gavenkoa
我正在使用 Powershell (Core, 即 pwsh.exe)。我试图找到有关 Windows-11 和 Powershell 上特殊 文件 支持的更多信息,但通常来说,微软提供的信息非常模糊和缺乏。 - not2qubit
在Powershell中只有可用的重定向 - not2qubit

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