| 
 | 
 本帖最後由 vegewell 於 2014-8-20 03:15 編輯  
 
回復 3# jacklnc  
這是省略用語,意思就是既然讀不到,就要催它快給, 
當然這需要一些技術, 
 
我認為你的問題可能出在 
  if ( NewSoftSerial::available() > 0 &&  NewSoftSerial::read()==SLCD_INIT ) 
        { 
之後,多的這一行: NewSoftSerial::print(SLCD_INIT_ACK); 
可能這句把機器搞混了, 
它裡面有固定的開機程序,不能亂寫, 
 
所以改如下: 
 NewSoftSerial::begin(9600); 
 
    while(1) 
    { 
        if ( NewSoftSerial::available() > 0 &&  NewSoftSerial::read()==SLCD_INIT ) 
        { 
            break; 
        } 
    } 
 
    delay(2);              
    NewSoftSerial::print(SLCD_CONTROL_HEADER);        
    NewSoftSerial::print(SLCD_POWER_OFF);             
    delay(1);              
    NewSoftSerial::print(SLCD_CONTROL_HEADER);        
    NewSoftSerial::print(SLCD_POWER_ON);              
    delay(1);              
    NewSoftSerial::print(SLCD_INIT_ACK);  
 
    while(1) 
    { 
        if (NewSoftSerial::available() > 0 && NewSoftSerial::read()==SLCD_INIT_DONE) 
            break; 
    }   
如果還不行, 
再如下: 
Serial.begin(9600); 
 NewSoftSerial.begin(9600); 
 
  delay(5000); 
 
  Serial.println("Starting the set-up process"); 
  delay(10); 
  NewSoftSerial.write(SLCD_CONTROL_HEADER);    
  NewSoftSerial.write(SLCD_POWER_OFF);  
  delay(10); 
  NewSoftSerial.write(SLCD_CONTROL_HEADER);    
  NewSoftSerial.write(SLCD_POWER_ON); 
  delay(10); 
  NewSoftSerial.write(SLCD_INIT_ACK); 
  while(1) 
  { 
      if (NewSoftSerial.available() > 0 && NewSoftSerial.read()==SLCD_INIT_DONE) { 
          Serial.println("It's talking!"); 
          break; 
      } 
  } 
如果還不行, 
就可能不是程式的問題, |   
 
 
 
 |