Connecting to the device via zkemkeeper.dll in windows application C# .net

断了今生、忘了曾经 提交于 2019-12-08 03:25:53

问题


I'm trying to connecting RFID and bio metrics devices in network, my local ip is 192.168.1.24 and the RFID device ip is 192.168.1.22, I'm using Visual studio 12 an sample windows application. to connect this device but it throws an error:

Unable to connect the device,error code = -201

private void btnConnect_Click(object sender, EventArgs e)
{

    if (txtIP.Text.Trim() == "" || txtPort.Text.Trim() == "")
    {
        MessageBox.Show("IP and Port cannot be null", "Error");
        return;
    }
    int idwErrorCode = 0;
    Cursor = Cursors.WaitCursor;

    if (btnConnect.Text == "DisConnect")
    {
        axCZKEM1.Disconnect();

        this.axCZKEM1.OnVerify -= new zkemkeeper._IZKEMEvents_OnVerifyEventHandler(axCZKEM1_OnVerify);
        this.axCZKEM1.OnAttTransactionEx -= new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(axCZKEM1_OnAttTransactionEx);
        this.axCZKEM1.OnNewUser -= new zkemkeeper._IZKEMEvents_OnNewUserEventHandler(axCZKEM1_OnNewUser);
        this.axCZKEM1.OnHIDNum -= new zkemkeeper._IZKEMEvents_OnHIDNumEventHandler(axCZKEM1_OnHIDNum);
        this.axCZKEM1.OnWriteCard -= new zkemkeeper._IZKEMEvents_OnWriteCardEventHandler(axCZKEM1_OnWriteCard);
        this.axCZKEM1.OnEmptyCard -= new zkemkeeper._IZKEMEvents_OnEmptyCardEventHandler(axCZKEM1_OnEmptyCard);

        bIsConnected = false;
        btnConnect.Text = "Connect";
        lblState.Text = "Current State:DisConnected";
        Cursor = Cursors.Default;
        return;
    }

    axCZKEM1.PullMode = 1;
    bIsConnected = axCZKEM1.Connect_Net(txtIP.Text.Trim(), Convert.ToInt32(txtPort.Text.Trim()));


    if (bIsConnected == true)
    {
        btnConnect.Text = "DisConnect";
        btnConnect.Refresh();
        lblState.Text = "Current State:Connected";
        iMachineNumber = 1;//In fact,when you are using the tcp/ip communication,this parameter will be ignored,that is any integer will all right.Here we use 1.

        if (axCZKEM1.RegEvent(iMachineNumber, 65535))//Here you can register the realtime events that you want to be triggered(the parameters 65535 means registering all)
        {
            this.axCZKEM1.OnVerify += new zkemkeeper._IZKEMEvents_OnVerifyEventHandler(axCZKEM1_OnVerify);
            this.axCZKEM1.OnAttTransactionEx += new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(axCZKEM1_OnAttTransactionEx);
            this.axCZKEM1.OnNewUser += new zkemkeeper._IZKEMEvents_OnNewUserEventHandler(axCZKEM1_OnNewUser);
            this.axCZKEM1.OnHIDNum += new zkemkeeper._IZKEMEvents_OnHIDNumEventHandler(axCZKEM1_OnHIDNum);
            this.axCZKEM1.OnWriteCard += new zkemkeeper._IZKEMEvents_OnWriteCardEventHandler(axCZKEM1_OnWriteCard);
            this.axCZKEM1.OnEmptyCard += new zkemkeeper._IZKEMEvents_OnEmptyCardEventHandler(axCZKEM1_OnEmptyCard);
        }

        MyCountFinger = 1;
        MyCountFace = 2;

    }
    else
    {
        axCZKEM1.GetLastError(ref idwErrorCode);
        MessageBox.Show("Unable to connect the device,ErrorCode=" + idwErrorCode.ToString(), "Error");
    }
    Cursor = Cursors.Default;
}

Please do help thanks in advance


回答1:


      bool isConnected;
        try {
            isConnected = zkem.Connect_Net(ipAddr.Text, Convert.ToInt32(4370));
        } catch (Exception ext) {
            Debug.WriteLine("Холбогдож чадсангүй" + ext);
            zkem.GetLastError(ref idwErrorCode);
            if (idwErrorCode != 0) {
                getError(idwErrorCode);
            } else {
                MessageBox.Show("No data from terminal returns!", "Error");
            }
            throw new Exception();
        }

        if (isConnected) { //Here you can register the realtime events that you want to be triggered(the parameters 65535 means registering all)
            this.btnRC.Enabled = false;
            zkem.EnableDevice(1, true);
            zkem.RegEvent(1, 65535);
            this.zkem.OnAttTransactionEx += new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(onAttTransactionEx);

            string sdwEnrollNumber = "";
            int idwVerifyMode = 0;
            int idwInOutMode = 0;
            int idwYear = 0;
            int idwMonth = 0;
            int idwDay = 0;
            int idwHour = 0;
            int idwMinute = 0;
            int idwSecond = 0;
            int idwWorkcode = 0;

            Cursor = Cursors.WaitCursor;
            zkem.EnableDevice(1, false);//disable the device
            if (zkem.ReadGeneralLogData(1)) { //read all the attendance records to the memory
                Debug.WriteLine("Trying to open connection");
                m_dbConnection.Open();
                Debug.WriteLine("Connection Opened");
                using (var command = new SQLiteCommand(m_dbConnection)) {
                    using (var transaction = m_dbConnection.BeginTransaction()) {
                        command.CommandText = String.Format("INSERT INTO `{0}` (`state`, `user_id`, `date`) VALUES(@state, @userID, @date)", prefix);
                        command.Prepare();
                        while (zkem.SSR_GetGeneralLogData(1, out sdwEnrollNumber, out idwVerifyMode,
                                out idwInOutMode, out idwYear, out idwMonth, out idwDay, out idwHour,
                                out idwMinute, out idwSecond, ref idwWorkcode)) { //get records from the memory

                            DateTime datetime = new DateTime(idwYear, idwMonth, idwDay, idwHour, idwMinute, idwSecond);
                            int unixDate = (Int32)(datetime.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
                            try {
                                command.Parameters.AddWithValue("@state", idwInOutMode);
                                command.Parameters.AddWithValue("@userID", Convert.ToInt32(sdwEnrollNumber));
                                command.Parameters.AddWithValue("@date", unixDate);
                            } catch (Exception ex) {
                                //Debug.WriteLine(ex.ToString() + Environment.NewLine + ex.StackTrace);
                            }
                            try {
                                command.ExecuteNonQuery();
                                Debug.WriteLine("inserted: " + String.Format("{0}/{1}/{2} {3}:{4}:{5}.000", idwYear , idwMonth, idwDay, idwHour, idwMinute, idwSecond));
                            } catch (SQLiteException ex) {
                                Debug.WriteLine(ex.ToString() +  " "+ex.StackTrace);
                            }
                        }
                        transaction.Commit();
                    }
                }
                m_dbConnection.Close();
                Debug.WriteLine("Connection Closed");
                Cursor = Cursors.Default;
            } else {
                Cursor = Cursors.Default;
                zkem.GetLastError(ref idwErrorCode);
                if (idwErrorCode != 0) {
                    getError(idwErrorCode);
                } else {
                    MessageBox.Show("No data from terminal returns!", "Error");
                }
            }
            zkem.EnableDevice(1, true); //enable the device
            Cursor = Cursors.Default;

            logBox.Items.Add("Холбогдлоо");
        }  

Here is my connection code. I only use Finger print. This working good.



来源:https://stackoverflow.com/questions/35285561/connecting-to-the-device-via-zkemkeeper-dll-in-windows-application-c-sharp-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!