有下面这样的一个函数;这个发卡是把卡记录在考勤机上吗?  还是什么意思? 
顺便问一下,就一个dll加上一份动态链接库使用说明就能做个考勤吗?发卡
AddKaoqinCard(DeviceID,DeviceType,Number,CardID1,CardID2,CardID3,CardID4,CardType,
                WorkNo1, WorkNo2 ,WorkNo3,WorkNo4, WorkNo5, orkNo6 ,WorkNo7,WorkNo8)                  
执行成功返回True,执行失败返回 False
参数名称 参数类型 数据类型 参数说明
DeviceID 设定值 整数 考勤机的ID号:(设定值)
DeviceType 设定值 整数 考勤机类型(考勤机:DeviceType=1)
Number 设定值 整数 卡在考勤机中的位置(从1--卡片总数)
CardID1 设定值 整数 卡号高位1(0-255)
CardID2 设定值 整数 卡号高位2(0-255)
CardID3 设定值 整数 卡号低位1(0-255)
CardID4 设定值 整数 卡号低位2(0-255)
CardType 设定值 整数 卡片类型(等于0即可)
WorkNo1 设定值 整数 工号(第一个字符,ASCII)
WorkNo2 设定值 整数 工号(第二个字符,ASCII)
WorkNo3 设定值 整数 工号(第三个字符,ASCII)
WorkNo4 设定值 整数 工号(第四个字符,ASCII)
WorkNo5 设定值 整数 工号(第五个字符,ASCII)
WorkNo6 设定值 整数 工号(第六个字符,ASCII)
WorkNo7 设定值 整数 工号(第七个字符,ASCII)
WorkNo8 设定值 整数 工号(第八个字符,ASCII)
例如:向ID为2考勤机增加卡片,卡号为18015789,工号为A0000001
AddKaoqinCard(1,1,01,18,230,45,65,48,48,48,48,48,48,49)

解决方案 »

  1.   

    我以前弄过考勤机,那时候是刚买回来的,它有一根线好象是USB和电脑连接,可以在电脑上运行它的一个窗口界面管理程序,设置好岗位,录入员工资料(就是你说的卡号),每个月再把考勤机里面的数据导到电脑上计算考勤,都是看考勤机的说明书弄的,不需要编程呀,除非你想自己做一个管理程序
      

  2.   

    恩,那下面这个是读取记录的,这样卡号能直接读到对吗?
    10、获取记录
    GetKaoQinRecord(DeviceID,DeviceType,RecordNo,Year,Month,Day,Hour,Minute,Second,
                      CardNo1,CardNo2,CardNo3,CardNo4,CardType,EventFlag,CurrentNo)                                    
    参数名称 参数类型 数据类型 参数说明
    DeviceID 设定值 整数 考勤机的ID号:(1-255)
    DeviceType 设定值 整数 考勤机类型(考勤机:DeviceType=1)
    RecordNo 设定值 整数 返回当前记录编号
    Year 返回值 整数 年
    Month 返回值 整数 月
    Day 返回值 整数 日
    Hour 返回值 整数 时
    Minute 返回值 整数 分
    Second 返回值 整数 秒
    CardNo1 返回值 整数 卡号高位1(0-255)
    CardNo2 返回值 整数 卡号高位2(0-255)
    CardNo3 返回值 整数 卡号低位1(0-255)
    CardNo4 返回值 整数 卡号低位2(0-255)
    CardType 返回值 整数 卡片类型(0-255)
    EventFlag 返回值 整数 事件代码(参看附录说明)
    CurrentNo 返回值 整数 下条记录编号
    例如:获取考勤机ID为2中的第23条进出记录
          GetKaoqinRecord (2,1,23, Year,Month,Day,Hour,Minute,Second,
                           CardNo1,CardNo2,CardNo3,CardNo4,CardType,
                               EventFlag,CurrentNo)
    注释:1.记录编号:记录存储在考勤机内的位置编号,每条记录对应一个位置编号(例如:控
             制器记录容量为20000,则编号范围1-20000);如果考勤机内有100条尚未读取的记
             录,并且第一条记录的编号为200,那么,读取时要发送的RecodNo=200,全部读完
             的编号是300
          2.如果不知道当前记录号,把RecordNo=16777215,就可获得当前记录和当前记录编号
          3.到最大记录编号后,记录编号会从1开始
          4.卡号是由四个整数组成,高位在前、低位在后
    返回值列表
    返回值 说明
    0 无回应(不能通讯)
    1 上传数据校验不正确(需要重新发当前命令)
    2 记录号错误(抓正确的记录号,重发这条命令,但必须RecordNo= 16777215,
    只有这样才能取道当前记录和记录号)
    3 没有新记录(考勤机中没有新的进出记录)
    4 执行成功
      

  3.   

    还有查询卡片资料的话是下面函数直接能读到工作号码吗?13、查询卡片资料
    GetKaoqinCard(DeviceID,DeviceType, CardID1,CardID2,CardID3,CardID4,CardType,
                    WorkNo1,WorkNo2,WorkNo3,WorkNo4,WorkNo5,WorkNo6 WorkNo7,WorkNo8)                 
    执行成功返回True,执行失败返回 False
    参数名称 参数类型 数据类型 参数说明
    DeviceID 设定值 整数 考勤机的ID号:(1-255)
    DeviceType 设定值 整数 考勤机类型(考勤机:DeviceType=1)
    CardID1 设定值 整数 卡号高位1(0-255)
    CardID2 设定值 整数 卡号高位2(0-255)
    CardID3 设定值 整数 卡号低位1(0-255)
    CardID4 设定值 整数 卡号低位2(0-255)
    CardType 设定值 整数 卡片类型(0-255)
    WorkNo1 返回值 整数 工号(第一个字符,ASCII)
    WorkNo2 返回值 整数 工号(第二个字符,ASCII)
    WorkNo3 返回值 整数 工号(第三个字符,ASCII)
    WorkNo4 返回值 整数 工号(第四个字符,ASCII)
    WorkNo5 返回值 整数 工号(第五个字符,ASCII)
    WorkNo6 返回值 整数 工号(第六个字符,ASCII)
    WorkNo7 返回值 整数 工号(第七个字符,ASCII)
    WorkNo8 返回值 整数 工号(第八个字符,ASCII)
    例如:查询考勤机的ID为2,卡号为18015789所对应的工号
    GetKaoqinCard(1,1,01,18,230,45,WorkNo1, WorkNo2, WorkNo3, WorkNo4
    WorkNo5, WorkNo6, WorkNo7, WorkNo8)
      

  4.   

    没错,GetKaoqinCard(DeviceID,DeviceType, CardID1,CardID2,CardID3,CardID4,CardType,
      WorkNo1,WorkNo2,WorkNo3,WorkNo4,WorkNo5,WorkNo6 WorkNo7,WorkNo8)   这个函数就是读取工号的,返回的值由WorkNo1-8提供,如果是返回值,要是指针或者引用类型才对啊,你先拿这个函数练手,其它的先放着估计是用C写的,只有C才如此喜欢使用out参数
    找一张能正常使用的卡,将卡号转换成四个整数,这个你应该明白了
    先声明四个用于容纳返回值的整数类型:
    int w1,w2,w3,w4;
    调用: int result = GetKaoqinCard(1,1,01,18,230,45,ref w1,ref w2,ref w3.....ref w8);
    如果返回值result!=0,说明调用成功,w1-w8应该得到了正确的工号
      

  5.   

    上面有笔误,是八个整数用于存放返回值GetKaoQinRecord(...)函数就是真正体现考勤机作用的关键函数:读取考勤记录
      

  6.   

    如果这个:
    int w1,w2,w3,w4;
    调用: int result = GetKaoqinCard(1,1,01,18,230,45,ref w1,ref w2,ref w3.....ref w8);
    这样成功话是不是W1,W2,W3,W4....W8就是得到的学号了啊?这样的话使用W1,W2,W3....w8只要这样定义成int类型,然后在函数中用ref W1,ref W2这样表示引用就可以了是吗?听你这样一说的话,这个毕业设计好像还蛮简单的么?
      

  7.   

    我还有一个问题想请教您,在动态链接库使用说明中有这样的两个函数:有什么不同吗?10、获取记录
    GetKaoQinRecord(DeviceID,DeviceType,RecordNo,Year,Month,Day,Hour,Minute,Second,
                      CardNo1,CardNo2,CardNo3,CardNo4,CardType,EventFlag,CurrentNo)                                    
    参数名称 参数类型 数据类型 参数说明
    DeviceID 设定值 整数 考勤机的ID号:(1-255)
    DeviceType 设定值 整数 考勤机类型(考勤机:DeviceType=1)
    RecordNo 设定值 整数 返回当前记录编号
    Year 返回值 整数 年
    Month 返回值 整数 月
    Day 返回值 整数 日
    Hour 返回值 整数 时
    Minute 返回值 整数 分
    Second 返回值 整数 秒
    CardNo1 返回值 整数 卡号高位1(0-255)
    CardNo2 返回值 整数 卡号高位2(0-255)
    CardNo3 返回值 整数 卡号低位1(0-255)
    CardNo4 返回值 整数 卡号低位2(0-255)
    CardType 返回值 整数 卡片类型(0-255)
    EventFlag 返回值 整数 事件代码(参看附录说明)
    CurrentNo 返回值 整数 下条记录编号
    例如:获取考勤机ID为2中的第23条进出记录
          GetKaoqinRecord (2,1,23, Year,Month,Day,Hour,Minute,Second,
                           CardNo1,CardNo2,CardNo3,CardNo4,CardType,
                               EventFlag,CurrentNo)
    注释:1.记录编号:记录存储在考勤机内的位置编号,每条记录对应一个位置编号(例如:控
             制器记录容量为20000,则编号范围1-20000);如果考勤机内有100条尚未读取的记
             录,并且第一条记录的编号为200,那么,读取时要发送的RecodNo=200,全部读完
             的编号是300
          2.如果不知道当前记录号,把RecordNo=16777215,就可获得当前记录和当前记录编号
          3.到最大记录编号后,记录编号会从1开始
          4.卡号是由四个整数组成,高位在前、低位在后
    返回值列表
    返回值 说明
    0 无回应(不能通讯)
    1 上传数据校验不正确(需要重新发当前命令)
    2 记录号错误(抓正确的记录号,重发这条命令,但必须RecordNo= 16777215,
    只有这样才能取道当前记录和记录号)
    3 没有新记录(考勤机中没有新的进出记录)
    4 执行成功
    11、获取记录和信息   
    GetKaoQinRecordAndInfor(DeviceID,DeviceType,RecordNo,Year,Month,Day, Hour,Minute,
                             Second,CardNo1,CardNo2,CardNo3,CardNo4 ,CardType,EventFlag,Infor,CurrentNo)  
       当事件代码等于43时,信息是有效的,否则信息无效。                                                   
    参数名称 参数类型 数据类型 参数说明
    DeviceID 设定值 整数 考勤机的ID号:(1-255)
    DeviceType 设定值 整数 考勤机类型(考勤机:DeviceType=1)
    RecordNo 设定值 整数 返回当前记录编号
    Year 返回值 整数 年
    Month 返回值 整数 月
    Day 返回值 整数 日
    Hour 返回值 整数 时
    Minute 返回值 整数 分
    Second 返回值 整数 秒
    CardNo1 返回值 整数 卡号高位1(0-255)
    CardNo2 返回值 整数 卡号高位2(0-255)
    CardNo3 返回值 整数 卡号低位1(0-255)
    CardNo4 返回值 整数 卡号低位2(0-255)
    CardType 返回值 整数 卡片类型(0-255)
    EventFlag 返回值 整数 事件代码(参看附录说明)
    Infor 返回值 整数 信息
    CurrentNo 返回值 整数 下条记录编号
    例如:获取考勤机ID为2中的第23条进出记录
    GetKaoqinRecordAndInfor (2,1,23, Year,Month,Day,Hour,Minute,Second,
    CardNo1,CardNo2,CardNo3,CardNo4,CardType, ventFlag,Infor,CurrentNo)
    注释:1.记录编号:记录存储在考勤机内的位置编号,每条记录对应一个位置编号(例如:控
             制器记录容量为20000,则编号范围1-20000);如果考勤机内有100条尚未读取的记
             录,并且第一条记录的编号为200,那么,读取时要发送的RecodNo=200,全部读完
             的编号是300
          2.如果不知道当前记录号,把RecordNo=16777215,就可获得当前记录和当前记录编号
          3.到最大记录编号后,记录编号会从1开始
    4.卡号是由四个整数组成,高位在前、低位在后
    5. Infor 说明:对于SK100或SK100T:Infor代表输入的信息。用户可对输入的信息进行自定义。  
    返回值列表
    返回值 说明
    0 无回应(不能通讯)
    1 上传数据校验不正确(需要重新发当前命令)
    2 记录号错误(抓正确的记录号,重发这条命令,但必须RecordNo= 16777215,
    只有这样才能取道当前记录和记录号)
    3 没有新记录(考勤机中没有新的进出记录)
    4 执行成功
      

  8.   

    GetKaoQinRecord()和GetKaoQinRecordAndInfor()功能是一样的,后者多了个Infor的返回参数,根据"5. Infor 说明:对于SK100或SK100T:Infor代表输入的信息。用户可对输入的信息进行自定义"这句话来理解,可能是特定型号的考勤机可以获取额外的信息,GetKaoQinRecord()应该是通用的.如果你把学过的东西都理解了,做起来就简单,不要盲目乐观,做出来了才是真的,如果没猜错的话,应该还有界面部分,还有IO,如果你说这个毕业设计简单,那是因为你这些年在大学确实学到了东西,天天打游戏/泡妞妞的人,他们会说: 太难了!
      

  9.   

    东西做出来就要悲剧了,因为我只有一个dll和一个说明,具体考勤机我没的....要做完了拿去学校才有的测试