0

我需要在 Codesys 中获取 char 的字节码(使用 ST 语言)。有没有办法做到这一点?

例如,在 c++ 中,它非常简单:

int c = 'h';
4

2 回答 2

1

有几种方法可以做到这一点,但概念是相同的。您将其转换为BYTE.

VAR
    sTest: STRING(1) := 'h';
    bChar: BYTE;
END_VAR

bChar := STRING_TO_BYTE(sTest);

但我最喜欢使用指针。这是返回字符串中给定字符的 ASCII 码的函数示例。

FUNCTION STRING_TO_ASCII: BYTE
    VAR_INPUT
        pbIn: POINTER TO BYTE;
        bCharNum: BYTE; (* Character number in a string start with 0 *)
    END_VAR
    pbIn := pbIn + bCharNum;
    STRING_TO_ASCII := pbIn^;
END_FUNCTION

现在你可以在程序中使用它了

VAR
    sTest: STRING(250) := 'Hello Wold!';
    bChar: BYTE;
END_VAR

bChar := STRING_TO_ASCII(sTest, 0); (* Character H *)
bChar := STRING_TO_ASCII(sTest, 1); (* Character e *)
于 2019-11-27T03:45:52.500 回答
0

使用变量创建函数 CHR():

FUNCTION CHR : BYTE
VAR_INPUT
    CHAR:STRING(1);
 END_VAR
VAR
    pBYTE:POINTER TO BYTE;
END_VAR

使用以下代码:

pBYTE := ADR(CHAR);
CHR := pBYTE^;

这做得很好

于 2021-02-02T09:11:39.900 回答