如下是这个接口文档提供的部分函数:函数声明原型
16. 打开串口
int mif_selecom(int com,int baud);
17. 读卡
int tem_readmsdata(LPSTR BH, LPSTR buff);
返回4字符的门锁编号(不可见字符); int tem_readmsdata1(LPSTR BH, LPSTR buff)
返回8个字节字符的门锁编号(可见字符);18. 写卡
int tem_writemsdata(LPSTR BH, LPSTR fksj,int xh,int sjdw,int sjlength,bool gs)
写4字符的门锁编号(不可见字符);int tem_writemsdata1(LPSTR BH, LPSTR fksj,int xh,int sjdw,int sjlength,bool gs)
写8字节字符的门锁编号(可见字符):19. 关闭串口
int mif_closecom(void);
我应该如何在我的asp.net中调用这些函数呢??

解决方案 »

  1.   

    在这之前必须把DLL引用(在项目上右击->添加引用->选择这个DLL就可以了)。
    然后:
    你这个DLL是C++写的,C++中类型LPSTR其实就是char*类型。
    而你这个调用的关键就是LPSTR类型不知道在C#用什么类型代替
    可以用System.Text.StringBuilder str=new System.Text.StringBuilder(50);代替,这个我没有试过行不行,如果这个不行,可以试一下string 类型。如果还是不行,可以试一下这样在C#中定义指针:
    unsafe
    {
    char b;
    char *a=&b;
            //可以在这里调用
    }
    这样就可以调用了,除了这个LPSTR的类型有点不一样之外,你就把这个DLL看做C#写的就可以了。
      

  2.   

    补充一下,在C#中使用指针要设置一下才行,不然会报错http://hobe.cnblogs.com/archive/2005/10/13/253741.aspx
      

  3.   

    unsafe 

    char b; 
    char *a=&b; 
            //可以在这里调用 //我应该在此直接调用函数名吗??如下:
    b=mif_selecom(3,5); 
    //是这样吗??还是都要用C++得方式还是C#得方式(char *a 为什么a前面要加格*呢??)


      

  4.   

     int tem_readmsdata(a,a);
    可以这样试一下,char *a表示定义一个指针.
    建议你用StringBuilder 或者 string 试一下,用这两个应该能满足你的要求了。