1
我使用了Trx ISO 8583庫。該庫以十六進制發送消息長度。但是我需要發送4個字節的Ascii字符作爲消息頭。怎麼做?Trx庫中的ISO8583消息頭
我使用了Trx ISO 8583庫。該庫以十六進制發送消息長度。但是我需要發送4個字節的Ascii字符作爲消息頭。怎麼做?Trx庫中的ISO8583消息頭
要更改消息頭你應該改變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>
請提供您嘗試過的代碼示例。 –
http://www.trxframework.net/ – Bakhodir
嗨Bakhodir。你有沒有使用連接的套接字或按需? –