Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 5906|回復: 10
打印 上一主題 下一主題

VB與arduino之間字串傳遞

[複製鏈接]
跳轉到指定樓層
1#
發表於 2014-12-22 13:37:53 | 顯示全部樓層 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我查看過板上很多字串處理的問題始終就是無法成功使用,我需要從VB端丟出'1A'的字串指令,arduino端接收指令'1A'
1代表LED ON,A代表pinmode 3輸出,我只用簡單的if來判斷
現在只有字串處理問題無法解決,請問要如何讓字串裡的字元用if分開判斷,謝謝
2#
 樓主| 發表於 2014-12-22 17:03:38 | 顯示全部樓層
ates1687大,這個位址判斷我懂,我試過了好像不行耶,如果我想用現在這個程式進行修改,要怎麼修改呢謝謝

char x;
char c[2];
int count = 0;
void setup()
{
  Serial.begin(9600);
  pinMode(3,OUTPUT);
}
void loop()
{
      if (Serial.available() > 0)
       {
               x = Serial.read();
               c[count++] = x;
               if(count == 2)
               {
                  count=0;
                  exam();
               }
        }
}
void exam()
{
       if(c=="1A")
        {
          digitalWrite(3,HIGH);
        }
        else if(c== "0A")
        {
          digitalWrite(3,LOW);
        }
}
3#
 樓主| 發表於 2015-1-7 21:52:44 | 顯示全部樓層
本帖最後由 mark501227 於 2015-1-7 22:01 編輯

我看懂了,但是我不知道怎麼使用這個函數,如果我要用substing()這個函數是要先宣告還是要去哪裡引用麻..?

有額外小問題,
1.為何我輸入Y沒辦法全亮,其他都正常(單獨全部打開也可),是因為需要delay還是?
2.若我要用digitalread讀取全部LED狀態丟到電腦,我是要把指令放在哪裡?因為放在loop裡面就會一直讀值
   EX: ABC(全亮)放在loop裡會變成100110111

  1. char x;  
  2. void setup()
  3. {
  4.   Serial.begin(9600);
  5.   for(int ledpin = 2; ledpin <=13; ledpin++)
  6.   {  pinMode(ledpin,OUTPUT);  }
  7. }
  8. void loop()
  9. {
  10.       if (Serial.available() > 0)
  11.       {  x = Serial.read();
  12.          LED();
  13.       }
  14. void LED(){
  15.           switch(x)
  16.           {
  17.             case 'A':    digitalWrite(2,HIGH);    break;
  18.             case 'M':    digitalWrite(2,LOW);     break;
  19.             case 'B':    digitalWrite(3,HIGH);    break;
  20.             case 'N':    digitalWrite(3,LOW);     break;
  21.             case 'C':    digitalWrite(4,HIGH);    break;
  22.             case 'O':    digitalWrite(4,LOW);     break;
  23.             case 'D':    digitalWrite(5,HIGH);    break;
  24.             case 'P':    digitalWrite(5,LOW);     break;
  25.             case 'E':    digitalWrite(6,HIGH);    break;
  26.             case 'Q':    digitalWrite(6,LOW);     break;
  27.             case 'F':    digitalWrite(7,HIGH);    break;
  28.             case 'R':    digitalWrite(7,LOW);     break;
  29.             case 'G':    digitalWrite(8,HIGH);    break;
  30.             case 'S':    digitalWrite(8,LOW);     break;
  31.             case 'H':    digitalWrite(9,HIGH);    break;
  32.             case 'T':    digitalWrite(9,LOW);     break;
  33.             case 'I':    digitalWrite(10,HIGH);   break;
  34.             case 'U':    digitalWrite(10,LOW);    break;  
  35.             case 'J':    digitalWrite(11,HIGH);   break;
  36.             case 'V':    digitalWrite(11,LOW);    break;
  37.             case 'K':    digitalWrite(12,HIGH);   break;
  38.             case 'W':    digitalWrite(12,LOW);    break;
  39.             case 'L':    digitalWrite(13,HIGH);   break;
  40.             case 'X':    digitalWrite(13,LOW);    break;
  41.             case 'Y':    for(int ledpinON = 2; ledpinON <=13; ledpinON++)
  42.                          {  pinMode(ledpinON,HIGH);  }  break;
  43.             case 'Z':    for(int ledpinoff = 2; ledpinoff <=13; ledpinoff++)
  44.                          {  pinMode(ledpinoff,LOW);  }  break;
  45.           }
  46. }
複製代碼
4#
 樓主| 發表於 2015-1-8 18:22:38 | 顯示全部樓層
你上次給的arduino網站他的substing()這個指令是橘字,可是我自己打的是黑字?所以無法使用?
還有不好意思,我的另外的小問題你可以幫我看一下嗎,謝謝你
5#
 樓主| 發表於 2015-1-9 13:34:25 | 顯示全部樓層
OK了,謝謝你耐心的指導
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-12 11:46 , Processed in 0.216704 second(s), 6 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表