다음 코드를 컴파일하려고하면 제목에 오류가 발생합니다.

#define char incomingByte; //Defines incomingByte #define char sendBack = K; #define char ?; #define pollTime; bool running = true; void setup() { Serial.begin(9600); //Set data rate. } void loop() { for(Serial.available() > 0;) { //Gets you the number of bytes that are available to be read from the serial port. pollTime = delayMicroseconds(200); // Sets a poll time of 200 microseconds. incomingByte = Serial.read(); if(incomingByte = ?) { Serial.print(sendBack); } } } 

답변

귀하의 코드는 거의 모든면에서 완전히 잘못되었습니다.


#define char incomingByte; //Defines incomingByte 

이 줄은 컴파일러가 char를 볼 때마다 incomingByte;를 대체 함을 의미합니다.


#define char sendBack = K; 

이제 charsendBack = K;를 대체합니다. div>.


#define char ?; 

이제 iv id = “2eb2a8dc8b가 표시되면 ?;를 대체합니다. “>

.


#define pollTime; 

여기에서 무슨 생각을하는지 모르겠습니다. 선언하려는 경우 다음과 같이 유형을 지정해야하는 변수 :

int pollTime; 

bool running = true; void setup() { Serial.begin(9600); //Set data rate. } void loop() { 

그것 줄은 괜찮습니다.


for(Serial.available() > 0;) { //Gets you the number of bytes that are available to be read from the serial port. 

세미콜론을 사용하지 마십시오. for 루프는 그렇게 작성되지 않았습니다. 즉, while를 의미 할 수 있습니다.

while(Serial.available() > 0) 

pollTime = delayMicroseconds(200); // Sets a poll time of 200 microseconds. 

그건 그런 일이 없습니다. 200µs 지연되고 “아무것도 설정하지 않습니다.


incomingByte = Serial.read(); 

이렇게하면됩니다.

char incomingByte; 

if(incomingByte = ?) { 

문자를 비교할 때 작은 따옴표로 묶어야합니다. 또한 = 즉, ==와 비교합니다.

if(incomingByte == "?") { 

Serial.print(sendBack); 

이전 코드에서 의미하는 바는 다음과 같습니다.

Serial.print("K"); 

 } } } 

이 줄은 괜찮아 보입니다.


C 프로그래밍에 대한 초보자 페이지를 읽어 보시기 바랍니다. 여기서 무엇을하는지 순전히 추측 할 수 있습니다. 한 가지는 #define의 작동 원리를 읽어보세요. 다음은 한 페이지입니다. https://www.techonthenet.com/c_language/constants/create_define.php . 기타 : http://www.cprogramming.com/reference/preprocessor/define.html

댓글

  • 감사합니다. 이것은 매우 도움이되었습니다. ' 제공하신 링크를 조사하겠습니다.
  • P.S. " respect "를 " aspect " 첫 번째 줄
  • ' 잘 모르겠습니다. 모든 측면에서 참조 : 전체, 전체, 전체, 전체, 전체, 전체, 전체

답변

[업데이트]

해보기 :

int question = 63; //in the ascii table, ? is 63 void setup() { Serial.begin(9600); //set baud rate. } void loop() { if (Serial.available()) { //Gets you the number of bytes that are available to be read from the serial port. if (Serial.read() == question) { Serial.println("OK"); } } } 

코멘트

  • 코드를 실행하면 다음 오류가 표시됩니다.
  • const char * '-' char ' [-fpermissive]
  • 페이지를 새로 고침하고 새 코드를 테스트합니다.
  • 감사합니다. 이 부분은 효과가있었습니다. 조건이 충족되지 않으면 LED를 끄는데도 필요하다는 것을 언급하는 것을 잊었습니다. 내가 제공 한 코드를 실행하면 LED가 켜져 있습니다.
  • ' 여기에 물음표에 ascii 코드를 사용할 이유가 없습니다. 이해하기 어려운 프로그램. '?' 사용 이전 오류는 단일 문자 (작은 따옴표)가 아닌 문자열 (큰 따옴표)을 사용한 결과였습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다