考勤机是TCP/IP协议的,并且将它设置为了TCP Server模式,现在知道协议的命令,参数等
命令--CH6
参数--xHxL   
应答--标准  
说明--该命令用于控制联机机具实现特定动作。输入的2个十六进制数字字符xHxL转换成十六进制数值后确定机具准备执行的动作类型,该8bit客户代码各位含义如下:
    bit7        保留,清零。
    bit6~bit4  ABA通讯引脚控制:
                    1xx: bit5 控制 ABA_DAT 脚,bit4 控制 ABA_CLK 脚;
                    其他:无作用。
    bit3        报警控制:
                    1:   报警;
                    0:   无动作。
    bit2        开锁控制:
                    1:   开锁;
                    0:   无动作。
    bit1~bit0  指示灯、蜂鸣器控制。
                    10:  正常指示灯亮,蜂鸣器响一声;
                    11:  错误指示灯亮,蜂鸣器响三声;
                    其他:保留。
例如,执行CH602!命令,返回#OK!,PASS灯点亮,蜂鸣器响一下。CH603!命令只会令蜂鸣器响三下(PASS灯会熄灭)。

解决方案 »

  1.   

    考勤机的TCP/IP模块应该是ZNE-200T的
      

  2.   

    不就是用最后一个字节(8 bit)表示嘛!
    CH602:
    C H 6 X(00000010)
    CH603:
    C H 6 X(00000011)X:最后一个字节
    00000010:指令字表示当前操作是: ABA通讯引脚控制无效;设备不报警,不开锁;正常指示灯亮,蜂鸣器响一声;在指令中转换成十六进制就是:02H; 把02H转换成2个字符就是'02'......
      

  3.   

    贴出来跟大家分享一下。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i:integer;
      cmd: string;
    begin
      setlength(tmpVar,24);
      cmd:=Trim(edt1.Text);
      for I:=1 to Length(cmd) do
      begin
        tmpVar[i-1]:=Byte(ord(cmd[i]));
      end;
      ClientSocket.Socket.SendBuf(tmpVar[0],24);
      tmpvar:=nil;
      if timer1.Enabled then
        exit
      else
         timer1.Enabled:=true;
    end;