通过windows命令行将数据传递给arduino
我试图玩发送数据到我的arduino,并不断遇到同样的问题。arduino上的代码如下:通过windows命令行将数据传递给arduino,arduino,serial-port,Arduino,Serial Port,我试图玩发送数据到我的arduino,并不断遇到同样的问题。arduino上的代码如下: void setup() { Serial.begin(9600); for (int i = 3; i <= 13; i++) { pinMode(i, OUTPUT); digitalWrite(i, LOW); } } void loop() { if (Serial.av
void setup()
{
Serial.begin(9600);
for (int i = 3; i <= 13; i++)
{
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
}
void loop()
{
if (Serial.available())
{
char ch = Serial.read();
int it = ch - '0';
digitalWrite(it, HIGH);
delay(1000);
digitalWrite(it, LOW);
}
}
我尝试了一下,得到了一个相当有趣的结果,有一半的时间我会在命令行中收到这个消息:
C:/users/XXXXX> echo 7 > COM3 //im 100% sure im using com3
Access is denied
另一半时间我会看到数据通过(RX灯会亮起),但什么也不会发生,连接到引脚7的灯不会亮起。我立刻想到你可能需要用ASCII码传递数据,但是没有
echo 55 > COM3
产生了同样的结果。如果有人知道如何通过窗口命令行将数据发送给arduio,我将不胜感激,谢谢。Welp在这里没有回应,经过7个多小时的研究,我终于找到了问题的解决方案。基本上是从命令行做的
powershell //to enter powershell
$port= new-Object System.IO.Ports.SerialPort COM#,Baudrate,None,8,one
//to create a new port object
$port.open() //to open a connection
$port.WriteLine(data)
$port.close()
看起来关键的事情是,你不能只是将原始数据发送到arduino,你需要先打开一个连接,然后再与arduino连接,这样arduino才能真正将数据识别为有效的串行输入
更新:
如果要从命令行运行它,只需编写一个powershell脚本,如下所示:
$com = $args[0]
$baud = $args[1]
$write = $args[2]
$port = $port= new-Object System.IO.Ports.SerialPort $com,$baud,None,8,one
$port.open()
$port.write($write)
$port.close()
然后可以从命令行调用,并按如下方式传递参数:
powershell.exe -ExecutionPolicy Bypass -file filelocation/test.ps1 COM3 2400 7
我也有类似的问题 首先,“访问被拒绝”错误是由持有端口的串行监视器引起的 第二,简单地“回显”字符串将无法正常工作,因为您也会沿行终止发送。 诀窍是发送如下内容:
set /p x="A" <nul >\\.\COM4
set/p x=“A”\\.\COM4
资料来源:
set /p x="A" <nul >\\.\COM4