Я пытаюсь прочитать данные, отправленные с последовательного порта через 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.
Я вижу ответ, используя устройство мониторинга, но получаю ввод, который был только ##
, когда я конвертирую этот ##
в шестнадцатеричный код, тогда я быget 0202
.
Я уже сделал все настройки правильно, потому что я могу отправить данные и активировать машину, но я все еще не могу перевести ответ.
У меня есть устаревшее программное обеспечение, использующее .NET, и оно может отлично считывать данные, используя те же данные ответов.
Еще одной странной вещью было значение sSTX
, равное #
, но я его тоже не беспокоюмного, потому что это понимает устройство.
Ожидаемый вывод (взят из монитора)
<ACK><STX><STX><NUL><SOH>01000000000000000000000000 P3 <ETX>
Но все, что я получаю, было 060202, что как-то
<ACK><STX><STX>
тело текста не в том же месте.
Я знаю, что ответ есть, но я просто не могу понять это неделями. очень странно.