Заголовок сообщения ISO8583 в библиотеке Trx

Я использовал библиотеку Trx ISO 8583. Эта библиотека отправляет длину сообщения в HEX. Но мне нужно отправить 4 байта символов Ascii в качестве заголовка сообщения. Как это сделать?


person Bakhodir    schedule 25.07.2013    source источник
comment
Приведите пример кода того, что вы пробовали.   -  person Brad Rem    schedule 25.07.2013
comment
trxframework.net   -  person Bakhodir    schedule 26.07.2013
comment
Привет Баходир. Использовали ли вы подключенную розетку или по запросу   -  person Kamran Shahid    schedule 21.04.2016


Ответы (1)


Чтобы изменить заголовок сообщения, вы должны изменить класс NboFrameLengthSink в Trx=>Communication=>Sinks=>NboFrameLengthSink.cs

Изменение в функции public void Send (контекст PipelineContext) ниже кода

buffer.Write(true, _bytesInHeader == 2
                ? new[] {(byte) (length >> 8), (byte) length}
                : new[] {(byte) (length >> 24), (byte) (length >> 16), (byte) (length >> 8), (byte) (length)});

to

string ls_length;

ls_length = length.ToString("####").PadLeft(4,'0');

byte[] ascii = System.Text.Encoding.ASCII.GetBytes(ls_length);

buffer.Write(true, _bytesInHeader == 2
 ? new[] { (byte)(length >> 8), (byte)length }
 : ascii);

и

в функции public bool Receive (контекст PipelineContext)

Код

context.ExpectedBytes = ( header[0] << 24 ) | ( header[1] << 16 ) | ( header[2] << 8 ) | header[3];

перейти к

context.ExpectedBytes = header[0] | header[1] | header[2] | header[3];

Если вам нужно отправить сообщение в формате Ascii, но растровое изображение в виде HEX, сделайте следующее:

В файле конфигурации Iso8583Ascii1987.xml изменить

<!-- Add first bitmap -->
<Invoke Name="Add">
  <Parameter Type="BitMapFieldFormatterFactory">
    <Property Name="FieldNumber" Value="0" />
    <Property Name="Description" Value="Primary bitmap" />
    <Property Name="Encoder" Reference="DataEncoderFactory" />
    <Property Name="LowerFieldNumber" Value="1" />
    <Property Name="UpperFieldNumber" Value="64" />
  </Parameter>
</Invoke>

<!-- Add secondary bitmap (field number 1) -->
<Invoke Name="Add">
  <Parameter Type="BitMapFieldFormatterFactory">
    <Property Name="FieldNumber" Value="1" />
    <Property Name="Description" Value="Secondary bitmap" />
    <Property Name="Encoder" Reference="DataEncoderFactory" />
    <Property Name="LowerFieldNumber" Value="65" />
    <Property Name="UpperFieldNumber" Value="128" />
  </Parameter>
</Invoke>
person Bakhodir    schedule 26.07.2013