I figured out how to do this.
I changed my struct to look like this:
[StructLayout(LayoutKind.Sequential)]
public class sSecurityLayer
{
public byte Header_no;
public byte Code;
[MarshalAs(UnmanagedType.LPStr)]
public string DataIn;
public int DataInLen;
[MarshalAs(UnmanagedType.LPStr)]
public string DataOut;
public int DataOutLen;
public byte AckNak;
}
and to use the function I just converted a byte[] into a string
sSecurityLayer mySecLayer = new sSecurityLayer();
Encoding enc = Encoding.GetEncoding(1252);
string s = enc.GetString(data);
mySecLayer.Header_no = header;
mySecLayer.DataInLen = data.Length;
mySecLayer.DataIn = s;
mySecLayer.DataOut = string.Empty;
mySecLayer.AckNak = 0;
AssembleDataPacket(mySecLayer);