Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过windows命令行将数据传递给arduino_Arduino_Serial Port - Fatal编程技术网

通过windows命令行将数据传递给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

我试图玩发送数据到我的arduino,并不断遇到同样的问题。arduino上的代码如下:

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