Recibo el error en mi título cuando intento compilar el siguiente código:
#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); } } }
Respuesta
Su código es completamente incorrecto en casi todos los aspectos.
#define char incomingByte; //Defines incomingByte
Esa línea significa que el compilador sustituirá incomingByte;
siempre que vea char
.
#define char sendBack = K;
Ahora sustituirá a sendBack = K;
cuando vea char
.
#define char ?;
Ahora sustituirá ?;
cuando vea char
.
#define pollTime;
No sé lo que estás pensando aquí. Si estás tratando de declarar una variable que tiene que dar un tipo, como este:
int pollTime;
bool running = true; void setup() { Serial.begin(9600); //Set data rate. } void loop() {
Esos las líneas están bien.
for(Serial.available() > 0;) { //Gets you the number of bytes that are available to be read from the serial port.
No quiere el punto y coma allí. Un bucle for
no se escribe así. Posiblemente te refieres a while
, es decir.
while(Serial.available() > 0)
pollTime = delayMicroseconds(200); // Sets a poll time of 200 microseconds.
Eso no está haciendo nada por el estilo. Está retrasando 200 µs, no está configurando nada.
incomingByte = Serial.read();
Esa línea está bien, suponiendo que haya declarado incomingByte
así, y no de la forma en que lo hizo:
char incomingByte;
if(incomingByte = ?) {
Eso debe estar entre comillas simples, ya que está comparando un carácter. También se compara con ==
no =
es decir.
if(incomingByte == "?") {
Serial.print(sendBack);
Se ve por su código anterior que quiere decir:
Serial.print("K");
} } }
Estas líneas se ven bien.
Le sugiero que lea una página para principiantes sobre programación en C. Esta es Solo adivina lo que estás haciendo aquí. Por un lado, lee cómo funciona #define
. Aquí hay una página: https://www.techonthenet.com/c_language/constants/create_define.php . Y otro: http://www.cprogramming.com/reference/preprocessor/define.html
Comentarios
- Gracias. Esto fue muy útil. ' buscaré los enlaces que proporcionaste.
- P.D. debe cambiar " respect " a " aspecto " en la primera línea
- Yo ' no estoy seguro de eso. Ver en todos los aspectos , lo que significa: total, absoluto, total, completo, total, total, absoluto
Respuesta
[ACTUALIZAR]
Intente esto:
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"); } } }
Comentarios
- Cuando ejecuto el código, aparece el siguiente error:
- conversión no válida de ' const char * ' a ' char ' [-fpermissive]
- actualice la página y pruebe el nuevo código
- Gracias. Esta parte funcionó. Olvidé mencionar que también lo necesito para apagar el LED si no se cumple la condición. Cuando ejecuto el código que ha proporcionado, el LED está encendido.
- No hay ' realmente no hay razón para usar el código ascii para un signo de interrogación aquí, hace el programa es difícil de entender. Use
'?'
su error anterior fue el resultado de usar una cadena (comillas dobles) en lugar de un solo carácter (comillas simples).