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

 


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