在ABAP中从mscomm中读取数据

Reading data from mscomm in ABAP

我正在尝试 read data sent from serial port via MSCOMM32 对象。

我得到的是##.

首先我将十六进制转换成字符串并发送到 COMM 端口:

DATA : xSTX TYPE xstring VALUE '02'.
DATA : sSTX TYPE string.

CALL FUNCTION 'HR_KR_XSTRING_TO_STRING'
EXPORTING
 in_xstring = xSTX
 IMPORTING
 out_string = sSTX. "this value is now # but still understood by the device

SET PROPERTY OF O_OBJ 'Output' =  sSTX .

然后挂在串口上的机器就会有响应。我使用以下代码读取数据:

  Data strmsg Type string.
  DO 10 TIMES.
    GET PROPERTY OF o_obj 'InBufferCount' = wa_buffer.
    If wa_buffer > 0.
        GET PROPERTY OF o_obj 'Input' =  strmsg.
    Endif.
  ENDDO.

我可以使用监控设备看到响应,但我得到的输入只有 ##,当我将这个 ## 转换为十六进制时,我会得到 0202.

我已经正确完成了所有设置,因为我可以发送数据并激活机器,但我仍然无法翻译响应。

我有一个使用 .NET 的遗留软件,它可以使用相同的响应数据完美地读取数据。

另一件奇怪的事情是 sSTX 的值是 # 但我不太在意它,因为它可以被设备理解。

预期输出是(取自监视器)

<ACK><STX><STX><NUL><SOH>01000000000000000000000000                       P3                                                                                                                                                    <ETX>

但我得到的只是 060202,即

<ACK><STX><STX> 

不知何故正文不在同一个space。

我知道答案就在那里,但我几个星期都想不出来。很奇怪。

我找到了答案。

将 inputlen 属性 设置为 4。 解决问题。