2013-07-25 36 views
1

我使用了Trx ISO 8583庫。該庫以十六進制發送消息長度。但是我需要發送4個字節的Ascii字符作爲消息頭。怎麼做?Trx庫中的ISO8583消息頭

+0

請提供您嘗試過的代碼示例。 –

+0

http://www.trxframework.net/ – Bakhodir

+0

嗨Bakhodir。你有沒有使用連接的套接字或按需? –

回答

1

要更改消息頭你應該改變NboFrameLengthSink 類是在的Trx =>通訊=>洗浴=> NboFrameLengthSink.cs

變化公共無效發送(PipelineContext上下文)下面的代碼功能

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); 

在功能上公共BOOL接收(PipelineContext上下文)

代碼

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

CHAGE到

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

如果需要以ASCII但位圖發送消息HEX 做如下:

IN Iso8583Ascii1987.xml congif文件更改

<!-- 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>