Forum: Mikrocontroller und Digitale Elektronik Float und String kombinieren für HAL_UART_Transmit + GSM Modul


von Samet Ö. (sam_oe1)


Angehängte Dateien:

Lesenswert?

Hallo,

ich arbeite gerade an einem Studienprojekt, beidem ein GSM-Modul 
(https://www.mikroe.com/lte-cat1-eu-click-for-europe) über einen 
MicroController (NUCLEO STM32L476RG) mit AT Kommandos und 
HAL_UART_Transmit Sensordaten an die Seite Thingspeak senden soll. Für 
die Programmierung nutze ich STM32CubeIDE.

Die AT Kommandos habe ich erstmal über PuTTY (COM Konsole) manuell 
eingegeben und über HTTP POST Kommandos kann ich Daten in einem Chart 
visualisieren (siehe Anhang). Die manuelle Vorgehensweise funktioniert 
soweit.

Nun möchte ich die AT Kommandos in die HAL_UART_Transmit Befehle mit den 
Sensorwerten einfügen jedoch hab ich folgendes Problem:

Die gesendete URL muss mit einem float value ergänzt werden um das 
Diagramm zu aktualisieren. Bsp: String neu = URL + Sensorvalue

Den Thingspeak Channel kann ich mit der API über die URL so ansteuern:

"https://api.thingspeak.com/update?api_key=XXXXXXXXXXXXXXXX&field1=";

Sobald ein Wert am Ende der URL Adresse mitgegeben wird, aktualisiert 
sich das Diagramm mit dem Wert "130":
"https://api.thingspeak.com/update?api_key=XXXXXXXXXXXXXXXX&field1=130";

Für die Kommunikation mit dem GSM Modul muss das entsprechende AT 
Kommando zusätzlich hinzugefügt werden:
AT^SISS=0,"address","https://api.thingspeak.com/update?api_key=XXXXXXXXXXXXXXXX&field1=130";


Über HAL_UART_Transmit möchte ich nun den Befehl:
AT^SISS=0,"address","https://api.thingspeak.com/update?api_key=XXXXXXXXXXXXXXXX&field1="; 
und zusätzlich ein float (Beispiel 130) senden:
1
HAL_UART_Transmit("AT^SISS=0,\"address\",\"https://api.thingspeak.com/update?api_key=XWK28RQHCBLD3LWY&field1=130\"\r\n");

Jedoch ist der Wert 130 statisch und soll nun mit einem float 
(Sensorwert) ersetzt werden. Daraus wollte ich einen neuen String 
erstellen und diesen mit HAL_UART_Transmit senden. Nun wollte ich 
fragen, wie ein char mit einem float wert ergänzt werden kann bzw. wie 
man beides kombiniert über HAL_UART_Transmit senden kann?

Zum Beispiel
1
char URL = "AT^SISS=0,\"address\",\"https://api.thingspeak.com/update?api_key=XWK28RQHCBLD3LWY&field1="
2
3
float Sensorval = 130.0
4
5
String Neu = URL + Sensorval
6
7
Sollte ergeben: "AT^SISS=0,\"address\",\"https://api.thingspeak.com/update?api_key=XWK28RQHCBLD3LWY&field1=130"
8
9
Dann:
10
HAL_UART_Transmit(String NEU)

Wie könnte ich das so umsetzten?

Vielen Dank im Voraus!
Grüße Sam_oe1

von STK500-Besitzer (Gast)


Lesenswert?

Google mal nach "sprintf" oder "snprintf".

von Wolfgang (Gast)


Lesenswert?

Samet Ö. schrieb:
> Wie könnte ich das so umsetzten?

Du willst zu viel auf einmal. Zerlege dein Problem. Es hakt bei dir an 
Stringverarbeitung. GSM, HAL, UART, URL und Thingspeak sind erstmal 
Nebenschauplätze.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.