美文网首页
1.注册和打卡功能

1.注册和打卡功能

作者: closer_54a1 | 来源:发表于2018-07-09 17:05 被阅读0次

初始化串口参数

private void InitSerialPort()
{
      serialPort1.BaudRate = 115200;//波特率115200
      serialPort1.DataBits = 8;
      serialPort1.Parity = Parity.None;
      serialPort1.StopBits = StopBits.One;
      serialPort1.ReceivedBytesThreshold = 1; // [TODO] 设置串口参数
}

读取职员编号

 if (serialPort1.BytesToRead > 0)
{
     response = serialPort1.ReadExisting();
     string stuffId = ISO15693CardHandler.GenerateBlockData(response);
     stuffId = stuffId.TrimStart('0');
     this.toolStripStatusLabel1.Text = "读取到职员编号为" + stuffId;
     return stuffId;
 }

寻卡

 string response = "";
 serialPort1.Write(ISO15693Card.COMMAND_WRITE_REG);
Thread.Sleep(MILLISECOND_IN_SLEEP);
if (serialPort1.BytesToRead > 0) response = serialPort1.ReadExisting(); serialPort1.Write(ISO15693Card.COMMAND_SET_AGC);
    Thread.Sleep(MILLISECOND_IN_SLEEP);
if (serialPort1.BytesToRead > 0) response = serialPort1.ReadExisting();   serialPort1.Write(ISO15693Card.COMMAND_SET_RECV_MODE);
    Thread.Sleep(MILLISECOND_IN_SLEEP);
if (serialPort1.BytesToRead > 0) response = serialPort1.ReadExisting();      serialPort1.Write(ISO15693Card.COMMAND_INVEN_CARD);//寻卡
   Thread.Sleep(MILLISECOND_IN_SLEEP);
if (serialPort1.BytesToRead > 0) response = serialPort1.ReadExisting();//获取返回的字符串
     List<ISO15693Card> cards = ISO15693CardHandler.InventoryCard(response);//解析返回的字符串,获取寻到的卡ID

读取卡上第08块的数据,获得职员编号

 if (cards.Count > 0)
{
     string ID;
     this.toolStripStatusLabel1.Text = "已找到";
     ID = ReadSingleBlock(ISO15693CardHandler.CovertEndian(cards[0].ID), "08");
     if (str == ID)
     return;
     str = ID;
                   
                    // [TODO] 向数据库中插入一条打卡记录,插入成功后显示打卡成功
     String connStr = ConfigurationManager.ConnectionStrings["Attendance"].ConnectionString;
     SqlConnection sqlConn = new SqlConnection(connStr);
     try
 {
     this.toolStripStatusLabel1.Text = "";
     sqlConn.Open();
     String sqlStr = "insert into record(employee_id,date, time, machine_id) values(@id,@date,@time,'1')";
     SqlCommand cmd = new SqlCommand(sqlStr, sqlConn);
     string date = DateTime.Now.ToShortDateString();
     string time = DateTime.Now.ToLongTimeString();
     cmd.Parameters.Add(new SqlParameter("@id", ID));
     cmd.Parameters.Add(new SqlParameter("@date", date));
     cmd.Parameters.Add(new SqlParameter("@time", time));
     int res = cmd.ExecuteNonQuery();
     if (res != 0)
{
     this.toolStripStatusLabel1.Text = "打卡成功";

}
     else
{
     this.toolStripStatusLabel1.Text = "打卡失败";
}
}
     catch (Exception exp)
{
     MessageBox.Show("访问数据库错误:" + exp.Message);
}
     finally
{
     sqlConn.Close();
}
}
     else
{
     this.toolStripStatusLabel1.Text = "";
}
}

注册新卡,往第08块写入职员编号

 private void bt_Register_Click(object sender, EventArgs e)
{
      if (!serialPort1.IsOpen)
            {
                this.toolStripStatusLabel1.Text = "请先打开串口";
                return;
            }

       this.toolStripStatusLabel1.Text = "未找到有效的卡";

            // '666'填充为'00000666'
       string stuffId = this.tb_EmployeeId.Text.PadLeft(8, '0');
            // '00000666'转变成'66060000'
       stuffId = ISO15693CardHandler.CovertEndian(stuffId);

            // 检查输入数据的错误
            // ISO15693为32位,4字节,8字符
       if (stuffId.Length != 8)
            {
                MessageBox.Show("请输入4字节的16进制数据!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // 检查16进制字符错误
            if (!ISO15693CardHandler.CheckValidHexBytes(stuffId))
            {
                MessageBox.Show("写入数据的16进制格式错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // [TODO] 寻卡,将RFID卡号读出来
            string response = "";
            serialPort1.Write(ISO15693Card.COMMAND_WRITE_REG);
            Thread.Sleep(MILLISECOND_IN_SLEEP);
            if (serialPort1.BytesToRead > 0) response = serialPort1.ReadExisting();serialPort1.Write(ISO15693Card.COMMAND_SET_AGC);
            Thread.Sleep(MILLISECOND_IN_SLEEP);
            if (serialPort1.BytesToRead > 0) response = serialPort1.ReadExisting();serialPort1.Write(ISO15693Card.COMMAND_SET_RECV_MODE);
            Thread.Sleep(MILLISECOND_IN_SLEEP);
            if (serialPort1.BytesToRead > 0) response = serialPort1.ReadExisting();serialPort1.Write(ISO15693Card.COMMAND_INVEN_CARD);//寻卡
            Thread.Sleep(MILLISECOND_IN_SLEEP);
            if (serialPort1.BytesToRead > 0) response = serialPort1.ReadExisting();//获取返回的字符串List<ISO15693Card> cards = ISO15693CardHandler.InventoryCard(response);//解析返回的字符串,获取寻到的卡ID // [TODO] 向RFID卡第00块写入职员编号数据,无论成功与否,均应该在状态栏显示提示信息
            if(WriteSingleBlock(ISO15693CardHandler.CovertEndian(cards[0].ID), "08",stuffId))
            {
              this.toolStripStatusLabel1.Text = "写入成功";
            }
        }

相关文章

  • 1.注册和打卡功能

    初始化串口参数 读取职员编号 寻卡 读取卡上第08块的数据,获得职员编号 注册新卡,往第08块写入职员编号

  • day51-Django项目-天天生鲜

    一、注册模块 1.创建注册验证表单 2.注册功能 二、登录模块 1.创建登录验证表单 2.登录功能 三、中间件校验...

  • 注册功能实现 -- 1.整体分析

    一、接口设计思路 分析业务逻辑,明确再这个业务中需要射击到几个相关子业务,将每个子业务当做一个接口来设计 分析接口...

  • 业务流程图

    注册流程主流程示例 1.填写注册资料 2.验证并激活 3.注册完成 需求分解功能表 编号 模块名称 功能名称 功能描述

  • day10 作业

    1.操作页面 2. 注册功能 3.登录功能 4.管理功能

  • Aurora学习DAY2

    --功能定义 1.页面注册 云平台管理=》开发维护=》页面注册 2.功能定义 云平台管理=》系统管理-云级=》功能...

  • 2019-08-27 ansible剧本

    剧本编写扩展功能 1.剧本变量的设置2.剧本变量注册功能register注册变量 3.剧本编写判断功能 4.剧本编...

  • 2020-06-19--flask项目04--注册功能大结局

    注册功能代码以及分析 注册功能完结 在上一节实现了短信验证码的实现,接下来实现注册的实现。 问题: 1.首先分析一...

  • 作业2:使用集合实现注册登陆功能

    第一步: 提示用户选择功能, A(注册) B(登陆) 。 要求: 功能选择 的时候要忽略大小写。 注册:1. 提...

  • 10.15 day12作业

    登陆和注册功能代码如下

网友评论

      本文标题:1.注册和打卡功能

      本文链接:https://www.haomeiwen.com/subject/ldltpftx.html