VC的结构

 

struct HY_RECT_S

    {

        long lLeft;

        long lRight;

        long lTop;

        long lBottom;

    };

 

    struct ID_CARD_S

    {

     char szText[10][256];

     HY_RECT_S idRect[10];

    };

花了很久才解决 贴出来代码 跟遇到同样问题的朋友分享下

 

 Test
{
    public partial class Form1 : Form
    {
        [StructLayout(LayoutKind.Sequential, CharSet 
= CharSet.Ansi, Pack = 1)]
        
public struct HY_RECT_S
        {
            
public long lLeft;
            
public long lRight;
            
public long lTop;
            
public long lBottom;
        }
        [StructLayout(LayoutKind.Sequential, CharSet 
= CharSet.Ansi, Pack = 1)]
        
public struct ID_CARD_S
        {
            [MarshalAs(UnmanagedType.ByValArray, SizeConst 
= 2560)]
            
public byte[] szText;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst 
= 10)]
            
public HY_RECT_S[] idRect;
        }

        [DllImport(
"D:\\DLL\\IDRCore.dll", EntryPoint = "Get_IdcData", CharSet = CharSet.Ansi)]
        
public extern static int Get_IdcData(
                        
int iCardType,
                        
string szFileNameIn,
                        String szFullFileNameOut,
                        String szHeadFileNameOut,
                        
ref ID_CARD_S pstOut);
        [DllImport(
"D:\\DLL\\IDRCore.dll", EntryPoint = "Device_Open", CharSet = CharSet.Ansi)]
        
public static extern int Device_Open();

        [DllImport(
"D:\\DLL\\IDRCore.dll", EntryPoint = "Get_IdcPic", CharSet = CharSet.Ansi)]
        
unsafe public static extern int Get_IdcPic(int iCardType, String szFileNameIn);

        
public Form1()
        {
            InitializeComponent();
        }
        
private void button4_Click(object sender, EventArgs e)
        {
            ID_CARD_S idCardS 
= new ID_CARD_S();
            StringBuilder szFullFileNameOut 
= new StringBuilder(1024);
            StringBuilder szHeadFileNameOut 
= new StringBuilder(1024);
            
unsafe
            {

                
//fixed (ID_CARD_S * pids = &idCardS)
                
//{
                    
//IntPtr ipIds = (IntPtr)pids;
                int i0=Device_Open();

                
int i1 = Get_IdcPic(2"C:\\1.bmp");

                
int i2 = Get_IdcData(2"C:\\1.bmp""C:\\2.bmp""C:\\3.bmp"ref idCardS);
                
byte[] result = new byte[256];
                String[] strResult 
= new String[10]; 
                
int k = 0;
                
for (int i = 0; i < 10; i++)
                {
                    
for (int j = 0; j < 256; j++)
                    {
                        result[j] 
= idCardS.szText[k++];

                    }
                    strResult[i] 
= FromASCIIByteArray(result);
                }

                    
string s = FromASCIIByteArray(idCardS.szText);
                    MessageBox.Show(s);

                
//}
            }


        }

        
public static String FromASCIIByteArray(byte[] characters)
        {
            Encoding myEncoding 
= Encoding.GetEncoding("gb2312");
            
string sData = myEncoding.GetString(characters);
            
string constructedString = sData.Trim().TrimEnd('\0');
            
return (constructedString);
        } 
    }
}

相关文章:

  • 2021-07-20
  • 2021-12-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-19
猜你喜欢
  • 2021-12-13
  • 2022-12-23
  • 2021-11-29
  • 2021-06-02
  • 2021-11-22
  • 2021-06-23
  • 2022-02-03
相关资源
相似解决方案