Conversion code ASCII -> données binaires
Cette instruction FP convertit le code ASCII sauvegardé dans la zone indiquée par s2_AsciiData en données binaires de 16/32 bits. La méthode de conversion est indiquée par s1_Format. Le résultat de la conversion est sauvegardé dans la zone spécifiée par d_BinaryData.
Les instructions FP FP_ASCII_TO_BIN et FP_ASCII_CHECK ne font pas de distinction entre lettres majuscules et minuscules.
Entrée
Chaîne de caractères de contrôle et format, définie entre virgules inversées
Adresse de départ pour la sauvegarde des données ASCII
Quantité de nombres à convertir : 0–65535
Position de départ dans les données ASCII : 0–255
Sortie
Adresse de départ pour la sauvegarde des données binaires
Position dans le code de contrôle |
Description |
s1_Format |
API 16 bits |
API 32 bits |
|
---|---|---|---|---|---|
Sens de la conversion |
|||||
+ |
Vers l’avant (uniquement pour les nombres hexadécimaux avec spécificateur x, X) |
'+%4X' |
● |
● |
|
Si le signe plus est omis : inverse (par défaut) |
'%4X' |
● |
● |
||
% |
Spécificateur de chaîne de caractères de format (obligatoire) |
● |
● |
||
Format du remplissage |
|||||
0 |
Compléter avec des zéros |
'%06x' |
- |
● |
|
+ |
Ajouter un signe plus |
'%+4d' |
- |
● |
|
- |
Alignement à gauche |
'%-6d' |
- |
● |
|
˽ |
(espace) ajouter un espace au lieu du signe plus |
'%˽4d' |
- |
● |
|
# |
Insérer 0x pour les nombres hexadécimaux |
'%#4X' |
- |
● |
|
Toujours ajouter un point décimal pour les nombres réels |
'%#8.0f' |
- |
● |
||
8 |
Largeur des données ASCII |
'%08d' |
● |
● |
|
Sans largeur :
|
'%d,' |
- |
● |
||
Précision après le point décimal |
|||||
.5 |
N’importe quel(s) digit(s) après le point décimal |
'%8.5f' |
- |
● |
|
I |
Doubler la longueur du spécificateur par ex. le spécificateur i et l = Ii -> DINT |
'+%4ld' |
● |
● |
|
Spécificateur de format |
|||||
i |
INT |
'%10i' |
● |
● |
|
u |
UINT |
'%10u' |
- |
● |
|
d |
INT |
'%6d' |
● |
● |
|
x |
Hexadécimal, caractère minuscule |
'+%4x' |
● |
● |
|
X |
Hexadécimal, caractère majuscule |
'+%4X' |
● |
● |
|
b |
BCD |
'+%5b' |
- |
● |
|
f |
Nombre à virgule flottante |
'+%-6.2f' |
- |
● |
|
e |
Exponentiel 1.23e10 |
'+%9.3e' |
- |
● |
|
E |
Exponentiel, majuscule, par ex. 1.23E10 |
'+%9.3E' |
- |
● |
|
g |
À virgule flottante ou exponentiel |
'+%12g' |
- |
● |
|
G |
À virgule flottante ou exponentiel, caractère majuscule |
'+%9.3G' |
- |
● |
|
|
'+%8dPANA' |
- |
● |
● disponible sur les automates 16 bits/32 bits
Exemple : '+%4X'
convertit une valeur ASCII d’une largeur de quatre caractères majuscules vers l’avant (valide pour les automates 16 bits/32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽12A' |
16#12A (affiché au format hexadécimal) |
Exemple : '%4X'
convertit une valeur ASCII d’une largeur de quatre caractères majuscules, conversion inverse (valide pour les automates 16 bits/32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽B2A' |
16#B2A (affiché au format hexadécimal) |
Exemple : '%06d'
convertit une valeur ASCII d’une largeur de six caractères, valeur décimale avec trois zéros à gauche (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'000100' |
16#100 (affiché au format hexadécimal) |
Exemple : '%+4d'
convertit une valeur ASCII d’une largeur de quatre caractères, valeur décimale, signe + ajouté (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'+100 ˽ ˽' |
100 (affiché au format décimal) |
Exemple : '%-6d'
convertit une valeur ASCII d’une largeur de six caractères alignés à gauche (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'100˽ ˽ ˽' |
100 (affiché au format décimal) |
Exemple : '%˽4d'
convertit une valeur ASCII d’une largeur de quatre caractères, avec un espace à gauche (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽100' |
100 (affiché au format décimal) |
Exemple : '%#8.0f'
convertit une valeur ASCII d’une largeur de huit caractères, nombre à virgule flottante, quatre espaces à gauche (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽ ˽ ˽ ˽123.' |
123.45678 (affiché au format décimal) |
Exemple : '%8.3f'
convertit une valeur ASCII d’une largeur de huit caractères, précision de trois caractères après le point décimal (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽123.456' |
123.45599 (affiché au format décimal) |
Exemple : '+%10u'
convertit une valeur ASCII d’une largeur de 10 caractères, avec sept espaces à gauche, nombre entier non signé (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽ ˽ ˽ ˽ ˽ ˽ ˽100' |
-100 (affiché au format décimal) |
Exemple : '%06d'
convertit une valeur ASCII d’une largeur de six caractères, avec trois espaces à gauche (valide pour les automates 16 bits/32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽ ˽ ˽100' |
100 (affiché au format décimal) |
Intervalle autorisé pour la valeur précédent le spécificateur :
1–15 avant les spécificateurs d, ld, i, li |
1–4 avant le spécificateur X |
1–8 avant le spécificateur lX |
S’il n’y a pas de largeur spécifiée, une virgule est ajoutée, par ex. '%d,'
(valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'100,' |
100 (affiché au format décimal) |
FP_BIN_TO_ASCII : la largeur minimale requise est utilisée
FP_ASCII_TO_BIN et FP_ASCII_CHECK : le séparateur par virgule est requis
Exemple : '+%4ld'
convertit une valeur ASCII d’une largeur de quatre caractères, DINT ou DWORD sont requis pour le résultat de la conversion (valide pour les automates 16 bits/32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽100' |
100 (affiché au format décimal) |
Exemple : '+%6i'
convertit une valeur ASCII d’une largeur de six caractères, avec trois espaces à gauche, nombre entier signé, conversion avant (valide pour les automates 16 bits/32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽ ˽ ˽-100' |
-100 (affiché au format décimal) |
Exemple : '+%6d'
convertit une valeur ASCII d’une largeur de six caractères, avec trois espaces à gauche, conversion avant (valide pour les automates 16 bits/32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'000100' |
100 (affiché au format décimal) |
Exemple : '+%4X'
convertit une valeur ASCII d’une largeur de quatre caractères majuscules, nombre hexadécimal en caractères majuscules, conversion avant (valide pour les automates 16 bits/32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽12A' |
16#12A (affiché au format hexadécimal) |
Exemple : '+%5b'
convertit une valeur ASCII d’une largeur de cinq caractères, données BCD (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽123' |
16#123 (affiché au format hexadécimal) |
Exemple : '+%-6.2f'
convertit une valeur ASCII d’une largeur de six caractères alignés à gauche, précision de deux digits après le point décimal (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'1.23˽' |
1.2345 (affiché au format décimal) |
Exemple : '+%9.3e'
convertit une valeur ASCII d’une largeur de neuf caractères, précision de 3 digits après le point décimal, exponentiel en minuscule (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'1.235e+03' |
1234.5678 (affiché au format décimal) |
Exemple : '1.235E+03'
convertit une valeur ASCII d’une largeur de neuf caractères, précision de 3 digits après le point décimal, exponentiel en majuscule (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'1.235E+03' |
1234.5678 (affiché au format décimal) |
Exemple : '+%12g'
convertit une valeur ASCII d’une largeur de 12 caractères, nombre à virgule flottante (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽ ˽ ˽ ˽ ˽1234.57' |
1234.5678 (affiché au format décimal) |
Exemple : '+%9.3G'
convertit une valeur ASCII d’une largeur de neuf caractères, précision de trois caractères après le point décimal, nombre à virgule flottante, exponentiel en majuscule (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽ ˽ ˽1.E+03' |
1234 (affiché au format décimal) |
Pour FP_BIN_TO_ASCII : tout type de chaîne de caractères peut être ajouté à la conversion
Exemple : '+%8dPANA'
convertit une valeur ASCII d’une largeur de huit caractères, nombre décimal, 'PANA' est ajouté (valide uniquement pour les automates 32 bits)
Données ASCII |
Résultat de la conversion en données binaires |
---|---|
'˽ ˽ ˽ ˽ ˽100PANA' |
100 (affiché au format décimal) |
Si une erreur apparaît dans le caractère de contrôle désigné par sFormat.
Si une conversion avant (+) est indiquée dans sFormat lorsque le format est décimal.
Si le nombre de caractères ASCII par unité convertie, indiqué par n_Conversions, est supérieur à 4 pour des données de 16 bits ou 8 pour des données de 32 bits, lorsque le format hexadécimal est indiqué par s1_Format.
Si 0 est le nombre indiqué dans n_Conversions pour les unités de 16 ou 32 bits (1 ou 2 mots) qui doivent être converties.
Si le nombre indiqué par n_Conversions pour les décimales de 16 ou 32 bits qui doivent être converties, est supérieur à la zone de sauvegarde des données ASCII.
Si le résultat de la conversion est supérieur à la zone de sauvegarde.
Si une erreur apparaît dans le caractère de contrôle désigné par sFormat.
Si une conversion avant (+) est indiquée dans sFormat lorsque le format est décimal.
Si le nombre de caractères ASCII par unité convertie, indiqué par n_Conversions, est supérieur à 4 pour des données de 16 bits ou 8 pour des données de 32 bits, lorsque le format hexadécimal est indiqué par s1_Format.
Si 0 est le nombre indiqué dans n_Conversions pour les unités de 16 ou 32 bits (1 ou 2 mots) qui doivent être converties.
Si le nombre indiqué par n_Conversions pour les décimales de 16 ou 32 bits qui doivent être converties, est supérieur à la zone de sauvegarde des données ASCII.
Si le résultat de la conversion est supérieur à la zone de sauvegarde.
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.
VAR
bStart: BOOL:=FALSE;
sExample1: STRING[32]:='*1234,5678,';
arrayValuesExample1: ARRAY [0..1] OF UINT:=[2(0)];
END_VAR
Lorsque bStart est sur TRUE, l’instruction est exécutée. Elle convertit 2 x 4 caractères ASCII décimaux en données binaires. Offset = 1 caractère ASCII (8 bits).
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,'%d~',26,2,28,4,);
B(B_VARIN,,2,26,4,28,6,);
B(B_VARIN,,1,26,5,28,7,);
B(B_VAROUT,,arrayValuesExample1,41,2,43,4,);
B(B_F,Adr_Of_VarOffs_I!,,14,2,23,6,,?D@'Var'?DOffs?CAdr);
B(B_VARIN,,sExample1,12,3,14,5,);
B(B_VARIN,,2,12,4,14,6,);
B(B_F,FP_ASCII_TO_BIN!,,28,0,41,7,,?DEN?hs1_Format?ds2_AsciiData?dn_Conversions?dn_AsciiDataStartPosition?AENO?cd_BinaryData);
B(B_CONTACT,,bStart,5,1,7,3,);
L(23,4,28,4);
L(7,2,28,2);
L(1,2,5,2);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If (bStart) then
FP_ASCII_TO_BIN(s1_Format := '%d,',
s2_AsciiData := Adr_Of_VarOffs(Var := sExample1, Offs := 2),
n_Conversions := 2,
n_AsciiDataStartPosition := 1,
d_BinaryData => arrayValuesExample1);
End_if;