none
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。 RRS feed

  • 问题

  • 最近在对华视电子的二代身份证读卡器进行二次开发。调用里面的termb.dll,代码如下:

     //源程序说明文件中对函数的说明
     4.1 初始化连接 原 型:int CVR_InitComm (int Port)
    说 明:本函数用于PC与华视电子第二代居民身份证阅读器的连接。
    参 数:Port:连接串口或USB口
    值 意义
    1 串口1
    2 串口2
    3 串口3
    4 串口4
    1001 USB口1
    1002 USB口2
    1003 USB口3
    1004 USB口4
    返 回 值: 意义
    1            正确
    0            错误

     //VB6.0的示例文件,对CVR_InitComm的申明如下:
    Public Declare Function CVR_InitComm Lib "termb.dll" (ByVal Port As Long) As Integer

    //在VB中的应用
    If CVR_InitComm(1001) = 0 Then
        MsgBox "二代身份证读卡器连接失败!"
    Else
        Label2.Visible = False
    End If

    //c#中,我的申明部分
     [DllImport("termb.dll")]
    private static extern int CVR_InitComm(int Port);
     //我的调用部分(判断读卡器是否连接到计算机)
     public static bool InitComm()
    {
        if ((CVR_InitComm(1001)==1)||(CVR_InitComm(1002)==1) ||(CVR_InitComm(1003)==1)||(CVR_InitComm(1004)==1))
        {
             return true;
         }
         else
        {
             return false;
         }

    尝试过将参数改为Int16,Int32,Int64,都不管用 google了好久,也没找到合适的方法。希望这里能找到解决方案。
    2009年4月16日 4:05

答案

全部回复