Conversion données binaires -> code ASCII
Cette instruction FP convertit les données binaires de 16/32 bits sauvegardées dans la zone indiquée par s2_BinaryData en code ASCII. La méthode de conversion est spécifiée par la chaîne de caractères de contrôle de s1_Format. Le résultat de la conversion est sauvegardé dans la zone spécifiée par d_AsciiData.
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 binaires
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 ASCII
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 binaire en une valeur d’une largeur de quatre caractères majuscules, conversion avant (valide pour les automates 16 bits/32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
16#12A |
'˽12A' |
Exemple : '%4X'
convertit une valeur binaire en une valeur d’une largeur de quatre caractères majuscules, conversion inverse (valide pour les automates 16 bits/32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
16#B2A |
'˽B2A' |
Exemple : '%06d'
convertit une valeur binaire en une valeur d’une largeur de six caractères, valeur décimale avec trois zéros à gauche (valide uniquement pour les automates 32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
16#100 |
'000100' |
Exemple : '%+4d'
convertit une valeur binaire en une valeur d’une largeur de quatre caractères, valeur décimale, signe + ajouté (valide uniquement pour les automates 32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
100 |
'+100 ˽ ˽' |
Exemple : '%-6d'
convertit une valeur binaire en une valeur d’une largeur de six caractères alignés à gauche (valide uniquement pour les automates 32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
100 |
'100˽ ˽ ˽' |
Exemple : '%˽4d'
convertit une valeur binaire en une valeur d’une largeur de quatre caractères, avec un espace à gauche (valide uniquement pour les automates 32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
100 |
'˽100' |
Exemple : '%#8.0f'
convertit une valeur binaire en une valeur d’une largeur de huit caractères, nombre à virgule flottante, quatre espaces à gauche (valide uniquement pour les automates 32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
123.45678 |
'˽ ˽ ˽ ˽123.' |
Exemple : '%8.3f'
convertit une valeur binaire en une valeur 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 binaires |
Résultat de la conversion en données ASCII |
---|---|
123.45599 |
'˽123.456' |
Exemple : '+%10u'
convertit une valeur binaire en une valeur d’une largeur de 10 caractères, avec sept espaces à gauche, nombre entier non signé (valide uniquement pour les automates 32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
-100 |
'˽ ˽ ˽ ˽ ˽ ˽ ˽100' |
Exemple : '%06d'
convertit une valeur binaire en une valeur d’une largeur de six caractères, avec trois espaces à gauche (valide pour les automates 16 bits/32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
100 |
'˽ ˽ ˽100' |
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 binaires |
Résultat de la conversion en données ASCII |
---|---|
100 |
'100,' |
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 binaire en une valeur 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 binaires |
Résultat de la conversion en données ASCII |
---|---|
100 |
'˽100' |
Exemple : '+%6i'
convertit une valeur binaire 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 binaires |
Résultat de la conversion en données ASCII |
---|---|
-100 |
'˽ ˽ ˽-100' |
Exemple : '+%6d'
convertit une valeur binaire en une valeur d’une largeur de six caractères, avec trois espaces à gauche, conversion avant (valide pour les automates 16 bits/32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
100 |
'000100' |
Exemple : '+%4X'
convertit une valeur binaire en une valeur d’une largeur de quatre caractères, nombre hexadécimal en caractères majuscules, conversion avant (valide pour les automates 16 bits/32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
16#12A |
'˽12A' |
Exemple : '+%5b'
convertit une valeur binaire en une valeur d’une largeur de cinq caractères, données BCD (valide uniquement pour les automates 32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
16#123 |
'˽123' |
Exemple : '+%-6.2f'
convertit une valeur binaire en une valeur 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 binaires |
Résultat de la conversion en données ASCII |
---|---|
1.2345 |
'1.23˽' |
Exemple : '+%9.3e'
convertit une valeur binaire en une valeur d’une largeur de neuf caractères, précision de 3 digits après le point décimal, exponentiel en caractère minuscule (valide uniquement pour les automates 32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
1234.5678 |
'1.235e+03' |
Exemple : '1.235E+03'
convertit une valeur binaire en une valeur 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 binaires |
Résultat de la conversion en données ASCII |
---|---|
1234.5678 |
'1.235E+03' |
Exemple : '+%12g'
convertit une valeur binaire en une valeur d’une largeur de 12 caractères, nombre à virgule flottante (valide uniquement pour les automates 32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
1234.5678 |
'˽ ˽ ˽ ˽ ˽1234.57' |
Exemple : '+%9.3G'
convertit une valeur binaire en une valeur 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 binaires |
Résultat de la conversion en données ASCII |
---|---|
1234 |
'˽ ˽ ˽1.E+03' |
Pour FP_BIN_TO_ASCII : tout type de chaîne de caractères peut être ajouté à la conversion
Exemple : '+%8dPANA'
convertit une valeur binaire en une valeur d’une largeur de huit caractères, nombre décimal, 'PANA'est ajouté (valide uniquement pour les automates 32 bits)
Données binaires |
Résultat de la conversion en données ASCII |
---|---|
100 |
'˽ ˽ ˽ ˽ ˽100PANA' |
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;
iArray1: ARRAY [0..1] OF INT:=[1234,-56];
iAscii1: ARRAY [0..4] OF WORD:=[5(16#FFFF)];
END_VAR
La fonction est exécutée lorsque la variable bStart passe de FALSE à TRUE. Elle convertit deux unités de 16 bits en 2 x 4 données ASCII décimales. 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 := 10 ;
NETWORK_BODY
B(B_VARIN,,'%4d',10,5,12,7,);
B(B_VARIN,,iArray1,10,6,12,8,);
B(B_VARIN,,2,10,7,12,9,);
B(B_VAROUT,,iAscii1,25,5,27,7,);
B(B_CONTACT,,bStart,7,4,9,6,R);
B(B_COMMENT,,Converts two 16-bit units to 2x4 decimal ASCII data. Offset = 1 ASCII character (8-bit).,5,1,38,3,);
B(B_F,FP_BIN_TO_ASCII!,,12,3,25,10,,?DEN?hs1_Format?ds2_BinaryData?dn_Conversions?dn_AsciiDataStartPosition?AENO?cd_AsciiData);
B(B_VARIN,,1,10,8,12,10,);
B(B_COMMENT,,Result iAscii1: 'x1234 -56x',28,8,41,9,);
L(9,5,12,5);
L(1,5,7,5);
L(1,0,1,10);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(bStart) then
FP_BIN_TO_ASCII(s1_Format := '%4d',
s2_BinaryData := iArray1,
n_Conversions := 2,
d_AsciiData => iAscii1);
END_IF;