I am trying to make this code work, it should send some int values over UDP as a string. I am trying to use udp.write() to send a c-string; but I only get compilation errors regardless of what variable I try to send with it. Here is the sketch:
// WiFiUDPClient_telemetry_viewer_esp32.ino
#include <WiFi.h>
#include <WiFiUdp.h>
#include <Personal2.h>
// WiFi network name and password:
const char *networkName = WIFI_SSID;
const char *networkPswd = WIFI_PASSWORD;
IPAddress udpip(10, 0, 0, 2);
int chartport = 3333;
boolean connected = false;
int t1;
int t2;
int t3;
int a;
int b;
WiFiUDP udp;
void setup() {
delay(3000);
Serial.begin(115200);
Serial.println("start setup");
connectToWiFi(networkName, networkPswd);
Serial.println("end setup");
}
void loop() {
a = t1;
b = t2;
String str = String(a) + "," + String(b);
udpchart(str);
t1++;
t2++;
delay(1000);
}
bool udpchart(String text1) {
bool result = false;
String str = text1;
//Construct Char* from String:
str += "\n";
int n = str.length();
char text[n + 1];
strcpy(text, str.c_str());
result = udp_write(text, chartport);
return (result);
}
bool udp_write(char* text, int port) {
if (WiFi.status() == WL_CONNECTED) {
udp.stop();
udp.begin(WiFi.localIP(), 3333);
delay(10);
if (udp.beginPacket(udpip, port)) {
udp.write(test2);
udp.endPacket();
return (true);
} else {
udp.stop();
return (false);
}
} else {
return (false);
}
}
void connectToWiFi(const char *ssid, const char *pwd) {
Serial.printf("Connecting to %s ", ssid);
WiFi.begin(ssid, pwd);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("connected");
Serial.printf("Client IP %s\n", WiFi.localIP().toString().c_str());
} else {
Serial.println("Cannot Connect To WIfi");
}
}
Here is the error:
C:\Users\perigalacticon\OneDrive\Documents\Arduino\sketches\Modified Examples\WiFiUDPClient_telemetry_viewer_esp32\WiFiUDPClient_telemetry_viewer_esp32.ino: In function 'bool udp_write(char*, int)':
WiFiUDPClient_telemetry_viewer_esp32:60:17: error: invalid conversion from 'char*' to 'uint8_t' {aka 'unsigned char'} [-fpermissive]
60 | udp.write(text);
| ^~~~
| |
| char*
In file included from C:\Users\perigalacticon\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.2.0\libraries\Network\src/Network.h:14,
from C:\Users\perigalacticon\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.2.0\libraries\WiFi\src/WiFiGeneric.h:44,
from C:\Users\perigalacticon\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.2.0\libraries\WiFi\src/WiFiSTA.h:30,
from C:\Users\perigalacticon\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.2.0\libraries\WiFi\src/WiFi.h:34,
from C:\Users\perigalacticon\OneDrive\Documents\Arduino\sketches\Modified Examples\WiFiUDPClient_telemetry_viewer_esp32\WiFiUDPClient_telemetry_viewer_esp32.ino:3:
C:\Users\perigalacticon\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.2.0\libraries\Network\src/NetworkUdp.h:65:16: note: initializing argument 1 of 'virtual size_t NetworkUDP::write(uint8_t)'
65 | size_t write(uint8_t);
| ^~~~~~~
Multiple libraries were found for "WiFi.h"
Used: C:\Users\perigalacticon\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.2.0\libraries\WiFi
Not used: C:\Program Files (x86)\Arduino\libraries\WiFi
exit status 1
invalid conversion from 'char*' to 'uint8_t' {aka 'unsigned char'} [-fpermissive]
Why do I keep getting this error? How to fix it?