다음 코드를 컴파일하려고하면 제목에 오류가 발생합니다.
#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;
이제 char
이 표시되면 sendBack = 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 코드를 사용할 이유가 없습니다. 이해하기 어려운 프로그램.
'?'
사용 이전 오류는 단일 문자 (작은 따옴표)가 아닌 문자열 (큰 따옴표)을 사용한 결과였습니다.