【问题标题】:How do I solve Connection problem using TAD class php如何使用 TAD 类 php 解决连接问题
【发布时间】:2019-04-27 11:58:08
【问题描述】:

我正在使用 TAD 类 php 连接到考勤机,但我尝试了很多解决方案和代码,但我失败了,谁能帮帮我。

这适用于我使用 php codeigniter 的考勤管理系统,现在我使用手动方法将考勤从机器获取到 MySql。每天清晨,我使用机器公司提供的软件从机器下载所有考勤,然后该软件将所有考勤日志下载到 MS Access db 文件中,然后我从该文件中读取考勤。但现在我想要一个直接连接机器。 这是我尝试使用 TAD 类的一些代码,但与往常一样,我遇到了连接错误。

<?php

require 'vendor/autoload.php';
require 'lib/TADFactory.php';
require 'lib/TAD.php';
require 'lib/TADResponse.php';
require 'lib/Providers/TADSoap.php';
require 'lib/Providers/TADZKLib.php';
require 'lib/Exceptions/ConnectionError.php';
require 'lib/Exceptions/FilterArgumentError.php';
require 'lib/Exceptions/UnrecognizedArgument.php';
require 'lib/Exceptions/UnrecognizedCommand.php';

use TADPHP\TADFactory;
use TADPHP\TAD;


try {
        $tad = (new TADFactory(['ip' =>
        '192.168.2.200','com_key'=>0]))->get_instance();
        if($tad->is_alive())
        {
                    echo "done";exit();
                    //$tad->disable();
                    $att_logs = $tad->get_att_log();
                    // print_r($att_logs);exit();
                    $att_logs=$att_logs->filter_by_date(['start' => date('Y-m-d'),'end' =>
                    date('Y-m-d')]);
                    if ($att_logs->is_empty_response())
                    {
                        my_log('Does not have logs recorded');
                    //continue;
                    }
                    else
                    {
                        $array_att_logs = $att_logs->to_array();
                        $device_logs = array();
                        $counter=1;
                        if(!empty($array_att_logs))
                            foreach($array_att_logs as $key =>$val )
                            {
                                foreach($val as $log)
                                {
                                    $device_logs[]= array(
                                    'institutes_inst_id' => $row['inst_id'],
                                    'employees_machine_user_id' => $log['PIN'],
                                    'date' => date('Y-m-d',strtotime($log['DateTime'])),
                                    'time' => date('H:i:s',strtotime($log['DateTime']))
                                    );
                                    $counter++;
                                }
                            }
                        add_att_logs($device_logs);
                        //$tad->enable();
                        my_log('Device in ' . $row['inst_name']. '['.$row['ip_address']. '] has ' .
                        $counter . ' records');
                    }
        }
        else
        {
            echo "not";exit();
                    my_log('Device in ' . $row['inst_name'] . ' is off-line');
                    continue;
        }
}
catch(Exception $e)
{
        my_log('Device in ' . $row['inst_name']. '['.$row['ip_address']. '] is
        offline');
}


?>

【问题讨论】:

    标签: php zkteco


    【解决方案1】:

    从“访问控制软件”获取设备的“ip”和“comm_key”。也许您在此处提供的 ip 和 comm_key $tad = (new TADFactory(['ip' =&gt;'192.168.2.200','com_key'=&gt;0]))-&gt;get_instance(); 错了。

    您还需要在您的 php.ini 文件中启用 php_sockets.dll 和 php_soap.dll。

    【讨论】:

    • 什么是 com_key,我在哪里可以找到这个密钥?
    • php_socket 和 php_soap 均已启用,ip 地址 100% 正确,但我不知道 com_key。
    • @Haseebkhan 转到设备的主菜单 -> 通讯。 - >电脑连接。你会找到通讯键。我认为默认情况下它是空的,所以你可以试试这个,看看它是否有效。 $tad = (new TADFactory(['ip' =&gt;'192.168.2.200','com_key'=&gt;'']))-&gt;get_instance();
    • 非常感谢我的设备已连接但只返回用户信息只有其他功能不起作用(如 getAttendance() 和 getSizeUser() 等)只有 getUser() 工作。
    • 是的,我也刚刚开始研究它,它有点复杂。我在使用 TADResponse 时遇到问题。而且互联网上也没有太多帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2013-05-23
    • 2021-10-10
    • 2019-07-07
    • 2019-07-16
    • 2013-10-07
    • 1970-01-01
    相关资源
    最近更新 更多