2015-07-28 253 views
0

我試圖讓LED在Labview的數字控制中給出的頻率閃爍。我使用COM4將Arduino連接到Labview。 IThis是寫在Arduino的IDE代碼:在給定頻率下LED閃爍 - Arduino和Labview

char command; 
String string; 
void setup() 
{ 
    Serial.begin(9600); 
    pinMode(13, OUTPUT); 
    digitalWrite(13, LOW); 
} 
void loop() 
{ 
    if (Serial.available() > 0) 
    {string = "";} 

    while(Serial.available() > 0) 
    { 
    command = ((byte)Serial.read()); 
    if(command == ':') 
    { 
     break; 
    } 

    else 
    { 
     string += command; 
    } 

    delay(1); 
    } 

    if(string.toInt() > 0) 
    { 
    TempOn(); 
    TempOff(); 
    } 

    } 
    void TempOn() 
    { 
    long y= string.toInt(); 
    digitalWrite(13, HIGH); 
    delay(y); 
    } 
    void TempOff() 
    { 
    long y= string.toInt(); 
    digitalWrite(13, LOW); 
    delay(y); 
    } 
} 

如果我試圖讓它閃爍一定的值,如1000(我寫了下面的代碼從下面),它完全適用於該值!

if(string == "1000") 
{ 
    TempOn(); 
    TempOff(); 
} 

我不明白爲什麼它不會對一般的情況下工作...

這是在Labview中(框圖)代碼:

enter image description here

+0

Arduino不是C! – Olaf

+2

看起來您的Arduino代碼期望延遲字符串以冒號結尾,但您的LabVIEW代碼不會在數字的數字後面發送冒號。此外,LabVIEW代碼將每隔10 ms繼續傳輸一次數字,所以如果(比如說)數字控件設置爲1000,則數據流將看起來像「10001000100010001000」等。您想要將終止字符追加到字符串,然後將它傳遞給VISA Write,並且可能只在您單擊按鈕或值發生更改(例如,使用控件的值更改事件)時發送該值。 – nekomatic

回答

0

有您嘗試使用串行監視器結合Serial.print(「」);驗證是否有任何東西通過串口傳出?

在LabVIEW中,您可能需要嘗試向數字中添加行結束符(「\ r \ n」),因爲某些串行設備需要此來了解命令何時完成執行。