Autres articles / Other articles

Gestion de chaînes de caractères pour ESP32Forth

publication: 14 janvier 2022 / mis à jour 27 janvier 2022

Read this page in english

 

Appel à collaboration

Vous développez des montages, simples ou complexes avec ESP32 et ESP32forth.

Partagez-les ici sur ce site.

ESP32forth ne pourra se développer qu'avec la collaboration active de toutes les bonnes volontés.

Vos montages peuvent aider d'autres développeurs.

Les montages des autres développeurs peuvent vous aider.

Pour proposer un article ou un montage, cliquez ici



Compilez ce code source permettant de gérer mes chaînes alphanumériques avec ESP32Forth.

Listing complet: strings management for ESP32forth

 

Création d'une chaine alphanumérique

La création d'une chaine de caractères alphanumérique est très simple:

64 string myNewString 

Ici, nous créons une variable alphanumérique myNewString pouvant contenir jusqu'à 64 caractères.

Pour afficher le contenu d'une variable alphanumérique, il suffit ensuite d'utiliser type. Exemple:

s" This is my first example.." myNewString $!  
myNewString type   \ display: This is my first example.. 

Si on tente d'enregistrer uen chaîne de caractères plus longue que la taille maximale de notre variable alphanumérique, la chaîne sera tronquée:

s" This is a very long string, with more than 64 characters. It can't store complete"  
myNewString $!     
myNewString type    
  \ display: This is a very long string, with more than 64 characters. It can 

Ajout de caractère à une variable alphanumérique

Certains périphériques, le transmetteur LoRa par exemple, demandent à traiter des lignes de commandes contenant les caractères non alphanumériques Le mot c+$! permet cette insertion de code:

32 string AT_BAND 
s" AT+BAND=868500000" AT_BAND $!  \ set frequency at 865.5 Mhz 
$0a AT_BAND c+$! 
$0d AT_BAND c+$!    \ add CR LF code at end of command 

Le dump mémoire du contenu de notre variable alphanumérique AT_BAND confirme la présence des deux caractères de contrôle en fin de chaine:

--> AT_BAND dump
--addr---  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F  ------chars-----
3FFF-8620  8C 84 FF 3F 20 00 00 00 13 00 00 00 41 54 2B 42  ...? .......AT+B
3FFF-8630  41 4E 44 3D 38 36 38 35 30 30 30 30 30 0A 0D BD  AND=868500000...
 ok

Voici une manière astucieuse de créer une variable alphanumérique permettant de transmettre un retour chariot, un CR+LF compatible avec les fins de commandes pour le transmetteur LoRa:

2 string $crlf 
$0d $crlf c+$!   
$0a $crlf c+$! 
 
: crlf ( -- )       \ same action as cr, but adapted for LoRa 
    $crlf type 
  ; 

Cet article sera complété si d'autres fonctionnalités significatives sont développées.


Legal: site web personnel sans commerce / personal site without seling