2016-06-14 9 views
1

私のarduinoにデータを送信して再生しようとしていて、同じ問題が続いています。 Arduinoの上のコードは次のとおりです。あなたはそれが1秒間に指定されたピンに接続された光を点灯デバイスにシリアルモニターの上に文字を送信する際にwindowsコマンドラインから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); 
    } 
} 

この基本的にそれを作ります。 組み込みのシリアルモニタでは正常に動作しますが、デバイスには1-9の数字(まだ10+を行う方法がわからない)を送信し、指定されたライトが意図したとおりに点灯します。しかし、私の目標は、windows.hsystem()コマンドを使用してデバイスにデータを送信するためのC++プログラムを作成することです。私はそれを行う前に、私はデバイスにデータを送信するコマンドが必要です。私が見つかりました:

echo i > COM1 //with i being the number to be sent over 

は、まあ、私はそれを試してみましたが、かなり興味深い結果私は、コマンドラインでこのメッセージを受け取ることになる半分の時間を得た:

C:/users/XXXXX> echo 7 > COM3 //im 100% sure im using com3 
Access is denied 

私が見るであろう時間の残りの半分データが通過します(RXライトが点灯します)が、何も起こりません。ピン7に接続されたライトは点灯しません。私はあなたがASCIIでデータを渡す必要があるかもしれないと思っていましたが、いいえ、

echo 55 > COM3 

同じ結果が出ました。もし誰かがarduioにウィンドウコマンドラインを介してデータを送る方法を知っていれば、本当に感謝します。ありがとう。

答えて

1

Welpここでは反応がなく、さらに7時間の研究の後に私はついに私の問題の解決策を見つけたhere。重要なのは、あなただけのArduinoにかけた生データを送信傾けることであるように、基本的には、コマンドラインから

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との前に接続を開く必要がありますシリアル入力。

更新:その後、コマンドラインから呼び出すことができ、引数が渡されてい

$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スクリプトを記述していますように:

powershell.exe -ExecutionPolicy Bypass -file filelocation/test.ps1 COM3 2400 7 
関連する問題