C# 与dll 对接
接收
int GetInfo(char *psData)
读信息函数,成功返回0,其它为出错!
psData 为输出参数
m byte,
a(8) byte,
b (15) byte,
c(19) byte,
d(10) byte,
e byte,
C#代码
[DllImport("Dll.dll", EntryPoint = "GetInfo", CallingConvention = CallingConvention.Cdecl, SetLastError = true)]
public static extern int GetInfo(byte[] psData);
class PsBean
{
public byte[]psData=new byte[54];// 返回信息
public string getM() { return CommonHelper.byteArrayPartToString(psData, 0,1); }//(0-1)byte,
public string getA() { return CommonHelper.byteArrayPartToString(psData, 1, 8); }//(1-8) byte,
public string getB() { return CommonHelper.byteArrayPartToString(psData, 9, 15); }//(9-15) byte,
public string getC() { return CommonHelper.byteArrayPartToString(psData, 24, 19); }//(24-19) byte,
public string getD() { return CommonHelper.byteArrayPartToString(psData, 43, 10); }//(43-10) byte,
public string getE() { return CommonHelper.byteArrayPartToString(psData, 53, 1); }//(53-1)byte,
}
发送
int SendInfo(char *psData)
函数,成功返回0,其它为出错!
psData 为输入输出参数
m byte,
a(8) byte,
b(12) byte,
c (12) byte,
d(12) byte,
C#代码:
[DllImport("Dll.dll", EntryPoint = "SendInfo", CallingConvention = CallingConvention.Cdecl, SetLastError = true)]
public static extern int SendInfo(byte[] psData);
class PsData
{
/**
*传入参数
*/
public string m;//(0-1)byte,
public string a;// (1-8) byte,
public string b;// (9-12) byte,
public string c;// (21-12) byte,
public string d;// (33-12) byte,
public byte[] psDataByteArray=new byte[45];
public byte[] getPsFeeData()
{
StringBuilder sb = new StringBuilder();
sb.Append(m);
sb.Append(a.PadLeft(8));
sb.Append(b.PadLeft(12, '0'));
sb.Append(c.PadLeft(12, '0'));
sb.Append(d.PadLeft(12, '0'));
psDataByteArray= Encoding.ASCII.GetBytes(sb.ToString().ToCharArray());
return psDataByteArray;
}
}
public static string byteArrayPartToString(byte[] b,int beginIndex,int count)
{
if (null == b || b.Length == 0)
{
return "";
}
string str = System.Text.Encoding.Default.GetString(b, beginIndex, count);//System.Text.ASCIIEncoding.Unicode.GetString(b, beginIndex, count);
return str;
}