Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Trx ISO 8583 library. Отправка длины сообщения в Ascii / 2 сообщений из 2, страница 1 из 1
25.07.2013, 17:59
    #38344140
Bakhodir Radjabov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trx ISO 8583 library. Отправка длины сообщения в Ascii
Я использовал библиотеку с открытым кодом под названием Trx ISO 8583 library
Но она формирует сообщения в HEX и bitmap сообщения переводит в Ascii кодировку
вместе с остальным сообщением. Как это исправить?
...
Рейтинг: 0 / 0
25.07.2013, 18:05
    #38344152
Bakhodir Radjabov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trx ISO 8583 library. Отправка длины сообщения в Ascii
Чтобы изменить заголовок сообщения Вы должны изменить класс NboFrameLengthSink Она находится по адресу Trx=>Communication=>Sinks=>NboFrameLengthSink.cs в проекте.

Измените в функции public void Send(PipelineContext context) следующий код

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

на

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)

следующий код

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

на

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

Для того чтобы bitmap сообщения отправлялась в HEX а все остальное часть сообщения в Ascii
нужно в конфиг файле 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>
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Trx ISO 8583 library. Отправка длины сообщения в Ascii / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]