c# - ISO8583 message header in Trx library -
i used trx iso 8583 library. library sends message length in hex. need send 4 bytes of ascii chars message header. how that?
to change message header should change nboframelengthsink class in trx=>communication=>sinks=>nboframelengthsink.cs
change in public void send(pipelinecontext context) function below code
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);
and
in function public bool receive(pipelinecontext context)
code
context.expectedbytes = ( header[0] << 24 ) | ( header[1] << 16 ) | ( header[2] << 8 ) | header[3];
chage
context.expectedbytes = header[0] | header[1] | header[2] | header[3];
if need send message in ascii bitmap hex below:
in iso8583ascii1987.xml congif file change
<!-- 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>
Comments
Post a Comment