wieb
1
Hello,
I am trying to send one UDP packet but get stuck on concatenate between different data type and don't know how to solve it.
The code:
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
WiFiUDP Udp;
const char* UdpIPaddress = "192.168.0.240";
unsigned int UdpPort = 4210;
const char* Udpmessage = "Message";
int a=0;
float Temp=29.25;
void setup() {
Serial.begin (115200);
}
void loop() {
if(a==0){
a = a + 1;
const char* sendmessage = const char*(a) + "=" + const char*(Temp) + "=" + Udpmessage;
UdpSend(sendmessage, UdpIPaddress, UdpPort);
}
}
void UdpSend(const char* message, const char * ipaddress, int port){
Serial.println("Send message: ");
Udp.beginPacket(ipaddress, port);
Udp.write(message);
Udp.endPacket();
}
Arduino IDE compiler error: expected primary-expression before 'const'
Please help...
system
2
wieb:
WiFiUDP Udp;
const char* UdpIPaddress = "192.168.0.240";
.....
unsigned int UdpPort = 4210;
const char* Udpmessage = "Message";
.....
I see 2 const in your code. I bet the cpmpiler stops on the first.
So, there is an error in the line before : WiFiUDP Udp;
Check spelling
paulvha
3
This code is very confusion to me... but it looks you are trying to do type-casting which fails. try something like this:
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
WiFiUDP Udp;
const char* UdpIPaddress = "192.168.0.240";
unsigned int UdpPort = 4210;
char buf[40];
const char* Udpmessage = "Message";
int a=0;
float Temp=29.25;
void setup() {
Serial.begin (115200);
}
void loop() {
if(a==0){ // WHY check on zero ???
a = a + 1;
sprintf(buf, "%d=%f=%s", a,Temp, Udpmessage);
UdpSend(buf, UdpIPaddress, UdpPort);
}
}
void UdpSend(const char* message, const char * ipaddress, int port){
Serial.println("Send message: ");
Udp.beginPacket(ipaddress, port);
Udp.write(message);
Udp.endPacket();
}
wieb
4
demkat1:
I see 2 const in your code. I bet the cpmpiler stops on the first.
So, there is an error in the line before : WiFiUDP Udp;
Check spelling
Compiler stops in this line:
const char* sendmessage = const char*(a) + "=" + const char*(Temp) + "=" + Udpmessage;
Already double & triple check the spelling but not found any spelling mistake.
wieb
5
paulvha:
// WHY check on zero ???
I am trying to send only one UDP packet, that is why check on zero.
Or maybe you have a better solution? I am just a newbie, still lack of knowledge.
Thanks a lot PAULVHA for the guidance, because of your code now it works perfectly...
system
6
wieb:
Compiler stops in this line:
const char* sendmessage = const char*(a) + "=" + const char*(Temp) + "=" + Udpmessage;
Already double & triple check the spelling but not found any spelling mistake.
Oops, that is a 3rd one const.
I didn't look in "loop" because you cannot assign - change values in a const.
Perhaps this is the reason of the error