FP_HEX_TO_ASCII

十六进制 -> ASCII转换

如果触发器ENTRUE,则此FP指令会将s_Start中的十六进制数据转换为ASCII代码。n_Bytes指定要转换的字节数。结果存储在d_Start指定的区域中。ASCII代码需要8位(一个字节)来表示一个十六进制字符。当转换为ASCII时,数据长度将是源数据长度的两倍。

参数

输入

s_Start (WORD, DWORD)

十六进制数据

n_Bytes (INT, DINT, UINT, UDINT)

字节数

输出

d_Start (WORD, INT, UINT)

结果的数据区域的起始地址。大小为n_Bits * 2个字。

标注

存储时,组成一个字节的两个字符互换。两个字节作为一段数据进行转换。

错误标志

sys_bIsOperationErrorHold(变为TRUE并保持为TRUE)
  • 如果使用索引寄存器指定的区域超出限制。

  • 如果由n_Bytes指定的字节数大于由s_Start指定的区域

  • 如果计算结果超过由d_Start指定的区域

  • 如果n_Bytes= 0或负值

sys_bIsOperationErrorNonHold(对于一次扫描变为TRUE)
  • 如果使用索引寄存器指定的区域超出限制。

  • 如果由n_Bytes指定的字节数大于由s_Start指定的区域

  • 如果计算结果超过由d_Start指定的区域

  • 如果n_Bytes= 0或负值

示例16位数据

偏移量

十六进制字符

偏移量

转换的ASCII代码

等效字符串

s_Start

0

16#ABCD

Þ

d_Start

0

16#4443

DC

n_Bytes

16#0002

16#4241

BA

示例32位数据

偏移量

十六进制字符

偏移量

转换的ASCII代码

等效字符串

s_Start

0

16#1234

Þ

d_Start

0

16#3433

43

1

16#5678

1

16#3231

21

n_Bytes

16#0004

16#3837

87

16#3635

65

示例

POU头

所有用于编程此函数的输入和输出变量已在POU头中声明。所有编程语言使用相同的POU头。

	VAR
		bStart: BOOL:=FALSE;
		awInput: ARRAY [0..2] OF WORD:=[16#ABCD,2(0)];
		awResult: ARRAY [0..5] OF WORD:=[6(16#FFFF)];
	END_VAR

POU本体

当变量bStart设置为TRUE时,执行此函数。

LD本体

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 9 ;
        NETWORK_BODY
B(B_COMMENT,,After conversion: ø^awResult[0]=16#4443ø^awResult[1]=16#4241ø^awResult[2]=16#3030ø^awResult[3]=16#3030ø^awResult[4] is not written,23,0,38,6,);
B(B_CONTACT,,bStart,4,5,6,7,R);
B(B_F,FP_HEX_TO_ASCII!,,12,4,22,9,,?DEN?D@'s'?Dn_Chars?AENO?Cd_Start);
B(B_VARIN,,awInput[0],10,6,12,8,);
B(B_VAROUT,,awResult[0],22,6,24,8,);
B(B_VARIN,,4,10,7,12,9,);
L(1,0,1,9);
L(1,6,4,6);
L(6,6,12,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

if (DF(bStart)) then
	FP_HEX_TO_ASCII(s_Start := awInput[0], n_Bytes := 4, d_Start => awResult[0]);
	(* After conversion: 
		awResult[0]=16#4443
		awResult[1]=16#4241
		awResult[2]=16#3030
		awResult[3]=16#3030
		awResult[4] is not written *)
end_if;

最后更新日期: 此页面上的反馈松下热线