我经常使用 Powershell 作为我可以管理的所有内容的多合一命令行界面。我已经设法在 Windows 中使用“cl”来编译库存 Powershell 中的 C 代码,而不是下载完整的 VisualStudio IDE 和他们试图让我使用的特殊 Powershell 终端。我通过在 Windows 中编辑环境变量来做到这一点。我还为 SSH 设置了 Powershell,因此我可以直接从 Powershell 登录到我的 Raspberry Pi,而不需要 PuTTY。我一直在尝试实现的最新功能是让 Powershell 作为串行终端工作,以取代 Thonny(我用于 Raspberry Pi Pico)和 Arduino IDE 之类的东西。我已经设法弄清楚如何让它与这些命令进行一些基本的通信:
$port= new-Object System.IO.Ports.SerialPort COM#,Baudrate,None,8,one
$port.open()
$port.WriteLine("some string")
$port.ReadLine()
$port.Close()
但是,这有点蹩脚,因为我必须逐行手动读取行,而且我似乎无法让它像其他串行终端那样工作,它具有换行符/无行尾等功能以及其他功能终端更人性化。我在网上看到了一些声称将 Powershell 变成适当的串行终端的“脚本”,但我似乎无法让我玩过的少数几个按照我的预期工作。有谁知道我怎么能做到这一点?“脚本”是做到这一点的唯一方法,还是可以将 Powershell 配置为像功能更齐全的串行终端一样?
编辑:我在网上找到了这个脚本,它与我想要的很接近,但它贯穿整个程序并且从不停止等待我的输入。我认为我需要在 Arduino IDE 中使用与“无行尾”等效的东西才能使其正常运行。如果有人可以建议我可以添加到此代码中以实现“无行结尾”,我将非常感激。
$port = New-Object System.IO.Ports.SerialPort
$port.PortName = "COM4"
$port.BaudRate = "9600"
$port.Parity = "None"
$port.DataBits = 8
$port.StopBits = 1
$port.ReadTimeout = 9000 # 9 seconds
$port.DtrEnable = "true"
$port.open() #opens serial connection
Start-Sleep 2 # wait 2 seconds until Arduino is ready
$port.Write("93c") #writes your content to the serial connection
try
{
while($myinput = $port.ReadLine())
{
$myinput
}
}
catch [TimeoutException]
{
# Error handling code here
}
finally
{
# Any cleanup code goes here
}
$port.Close() #closes serial connection