Presentation is loading. Please wait.

Presentation is loading. Please wait.

RFID Programming (출결관리 프로그램)

Similar presentations


Presentation on theme: "RFID Programming (출결관리 프로그램)"— Presentation transcript:

1 RFID Programming (출결관리 프로그램)
Choi, Namseok

2 Contents Visual Basic을 이용한 RFID 출결 관리 프로그램 기본 프로그램 Database Design
From Design 사용자 등록 모듈 출결 체크 모듈

3 시작 - 실행 - Regsvr32 c:\OCX 파일 위치\NeoRF13Ocxs.ocx
기본 프로그램 본 강좌에서는 이전 장에서 설명한 RFID 13.56MHz 시스템을 이용해 출결관리 프로그램을 만들어 보겠습니다. 출결관리 프로그램은 RFID Tag를 이용해 학생들이 강의 시작 과 종료 시 태그를 이용해 출석시간을 Database에 저장하는 시 스템입니다. Visual Basic과 간단한 Database를 이용하여 출결 관리 프로그램을 작성 할 수 있습니다. 프로그램 제작에 앞서 필요한 기본 사항들을 설정하겠습니다. RFID를 사용하기 위해 이전 강좌에서 사용한 OCX 라이브러리 를 설치 하겠습니다. 시작 - 실행 - Regsvr32 c:\OCX 파일 위치\NeoRF13Ocxs.ocx

4 기본 프로그램 라이브러리가 등록이 되어 있다면 단말기로부터 들어오는 데이 터를 실시간으로 컴퓨터로 전달해주는 역할을 하는 RFID_SvrMon 프로그램을 실행 시킵니다.

5 기본 프로그램 라이브러리가 설치가 완료가 되면 Visual Basic 프로그램을 실 행시켜 등록된 라이브러리를 사용할 설정을 합니다. 새로 추가된 컴포넌트를 Visual Basic에 추가를 하기위해서 상 단의 프로젝트(P) - 구성요소를 클릭합니다. 구성요소 창에서 NeoRF13Ocxs Library를 체크하고 확인을 합 니다.

6 기본 프로그램 컴포넌트를 추가하게 되면 아래 그림과 같이 컨트롤 상자에 새로 운 컴포넌트가 추가가 된 것을 볼 수 있습니다.
이렇게 하면 RFID장비를 사용할 기본적인 설정이 완료가 되었 습니다. 여기에 원하시는 작업을 하면 RFID연동을 쉽게 할 수 있 습니다.

7 기본 프로그램 출결관리 프로그램은 학생들의 출입 시간을 등록하기 위한 Database를 사용합니다. 본 강좌에서는 사용이 간편하고, Visual Basic에서 프로그래밍이 용이한 Access Database를 사 용합니다. Access Database를 사용하기 위해서는 Visual Basic에서 추가 적인 설정을 해야 합니다. 상단의 메뉴에서 프로젝트 - 참조 메뉴 를 선택하면 외부 구성요소를 참조 할 수 있는 목록이 뜹니다.

8 기본 프로그램 참조 창에서 Microsoft ActiveX Data Object 2.8 Library 항목 을 체크 한 후 확인을 합니다.이제 본 프로젝트에서 MDB(Access Database)를 사용할 준비가 되었습니다. 위의 두 가지 설정을 완료 하면 RFID를 이용한 출결관리 프로그 램을 제작할 준비가 완료가 되었습니다.

9 Database Design 출결관리 프로그램은 학생들의 출입 시간을 저장하기 위한 Database를 사용 합니다. 앞서 설정했듯이 본 프로그램에서는 MS Access Database를 사용하여 제작합니다. Database는 간 단하게 구성을 하도록 하겠습니다. 우선 Microsoft Office Access를 실행 시키겠습니다. 본 강좌에 서는 Microsoft Office 2007을 사용하도록 하였습니다.

10 Database Design 새 데이터 베이스를 선택하겠습니다.Office 2007 버전의 경우는 우측과 같이 데이터베이스의 이름을 정하는 프레임이 나타납니 다. 또한, 2007 버젼에서는 기본적으로 .accdb의 파일로 저장이 됩니다. 옆의 폴더열기 부분을 클릭하여, 호환성이 높은 .mdb형 식으로 저장을 하겠습니다. 이렇게 하면 이전 버전인 2003에서 도 작업을 할 수 있습니다.

11 Database Design Database의 이름을 KIT_Attendance.mdb라고 적고 만들기를 하시면 아래 그림과 같이 DB의 테이블을 구성 할 수 있는 화면 이 나타나게 됩니다.

12 Database Design 테이블의 디자인을 아래와 같이 설정하고 테이블 및 Databas를 저장합니다. 필드이름 데이터형식
필드크기 빈문자열 허용 내 용 nID 일련번호 정수(Long) strUID 텍스트 255 N Tag UID값 strStdNumber 학 번 strName 이 름 strPhone 전화번호 strAddress Y 주 소 strDate 등록일자

13 From Design 출결관리 프로그램은 기본적으로 두 개의 폼을 가지고 있습니다. 개인 정보 및 출결현황을 확인 할 수 있는 메인 폼과, 사용자를 등록 할 수 있는 사용자 등록 폼으로 구성되어 있습니다. 우선 메 인 폼을 디자인 해보겠습니다.

14 From Design 객 체 명 이 름 속 성 명 변 경 값 Label lbMainUID Caption UID
lbMainStdNum 학 번 lbMainName 성 명 lbMainIn 입실시간 lbMainOut 퇴실시간 TextBox txtMainUID Text txtMainStdNo txtMainName txtMainInTime txtMainOutTIme CommandButton btnMainReadUID Read UID btnLoadInfo Load Info. btnCheckIn 입 실 btnCheckOut Catption 퇴 시 btnRegist Regist Students btnAddField AddField btnExit EXIT NeoRF13Ocx NeoRF13Ocx1 MSFlexGrid grdData Cols 37

15 From Design NeoRF13Ocx 객체는 앞서 추가한 RFID를 사용할 수 있는 객체 입니다.MSFlexGrid는 Database의 정보를 보여주기 위해 사용 한 객체입니다. 기본적인 Visual Basic 에는 제공이 되지 않으나 추가로 설치 할 수 있습니다. 프로젝트 - 구성요소 - 컨트롤탭에 서 Microsoft FlexGrid Control 6.0(SP6)을 선택 하면 MSFlexGrid 컨트롤을 사용 할 수 있습니다.

16 From Design

17 From Design 사용자 등록 폼을 디자인 하겠습니다. 객 체 명 이 름 속 성 명 변 경 값 Label lbRegUID
Caption UID lbRegStdNum 학 번 lbRegName 성 명 lbRegPhone 전화번호 lbRegAddr 주 소 TextBox txtRegUID Text txtRegStdNo txtRegName txtRegPhone txtRegAddr CommandButton btnRegReadUID Read UID btnLoad Load btnRegRegist Save btnRegExit Exit NeoRF13Ocx NeoRF13Ocx1

18 From Design

19 사용자 등록 모듈 본 프로그램은 사용자가 Database에 등록을 하는 모듈과, 등록 된 정보로 출결 체크를 하는 프로그램으로 구성이 됩니다. 첫 번째로 사용자를 등록하는 모듈을 작성 해 보겠습니다.사용자 등록 모듈은 사용자가 가진 Tag를 가져다 대고, Read UID 버튼 을 누르게 되면 Tag의 UID가 표시 됩니다. Load 버튼을 누르게 되면 Database에 접속을 하여 등록된 정보가 있으면 아래 그림 과 같이 등록된 정보를 표시 됩니다.

20 사용자 등록 모듈 등록된 정보가 없으면 학번, 서명, 전화번호, 주소를 작성하고 Save 버튼을 누르게 되면 Database에 UID 값과 함께, 작성된 정보를 Database에 저장됩니다. Read UID 버튼을 더블클릭하여 다음과 같이 구현합니다. Read UID 버튼을 클릭하게 되면 Text상자에 내용을 초기화 시 키고 NeoRF130Ocx 의 UID_Read 프로시져를 호출 합니다. Private Sub btnRegReadUID_Click() txtRegStdNo.Text = "" txtRegName.Text = "" txtRegAddr.Text = "" txtRegPhone.Text = "" Call NeoRF13Ocx1.UID_Read End Sub

21 사용자 등록 모듈 코드 창에서 위쪽의 콤보박스에 NeoRF13Ocx 컨트롤을 선택해 OnData라는 프로시져를 생성합니다. 그리고 생성된 코드 안에 다음과 같이 구문을 구현합니다. NeoRF13Ocx1_OnData 는 데이터가 컨트롤로 넘어왔을 때 자 동으로 호출되는 프로시져(함수)입니다. Private Sub NeoRF13Ocx1_OnData(ByVal sData As String) txtRegUID.Text = sData End Sub

22 사용자 등록 모듈 Tag를 리더기에 대고 Read UID 버튼을 눌렀을 때 아래와 같이 UID 창에 Tag의 ID가 나타난다면 연결이 된 것입니다.

23 사용자 등록 모듈 리더기와 연결이 되었으면 사용자의 Tag 값과 정보를 Database 에 조회 및 등록하는 모듈을 구현 해 보겠습니다.Database에 연 결하고, 관리하기 위해서는 여러 가지 복잡한 작업들이 필요합니 다. 본 강좌에서는 Database 수업이 아닌 관계로 필요한 모듈은 파일로 제공을 하겠습니다.

24 사용자 등록 모듈 제공한 mod_Define.bas파일과 mod_SQL.bas 파일을 프로젝 트가 저장된 폴더에 복사를 합니다. 프로젝트 - 모듈추가 메뉴를 통해서 위의 두 파일을 추가 시켜 주면 프로젝트 내에서 두 모듈 을 사용 할 수 있습니다.

25 사용자 등록 모듈 설정이 되었으면 mod_SQL.bas 모듈을 더블클릭 해서 파일을 엽니다. 그리고, 아래와 같이 기본적인 Database 설정을 구현합 니다.DBOpen() 함수에서 다른 설정은 수정할 필요가 없으며, dbFileName 변수에는 앞 강좌에서 생성한 Database의 경로와 파일명을 적어 주면 기본적인 설정이 완료 됩니다. Public Function DBOpen() As Boolean dbFilePath = App.Path dbFileName = "/db/KIT_Attendance.mdb" strDataPath = dbFilePath & "\" & dbFileName End Function

26 사용자 등록 모듈 위와 같이 설정이 완료 되면 이제 본 프로젝트에서, Database를 완벽하게 접근하여 사용 할 수 있게 되었습니다. Load 버튼을 더 블클릭 하여 아래와 같이 구현 합니다. Private Sub btnLoad_Click() If DBOpen = False Then MsgBox "Db Connection Failed.", vbExclamation, "Db Connection" Call DBClose End End If Dim sSql As String Dim sAddItem As String Dim iRow As Double Dim i As Integer

27 sSql = "SELECT * FROM KIT_ATT_DB WHERE strUID = '"
& txtRegUID.Text & "'" Call Execute_SQL(sSql) If sSQLSuccess = False Then Exit Sub If Rs.RecordCount <= 0 Then MsgBox "검색 결과가 없습니다.", vbInformation, "검색" Exit Sub Else Rs.MoveFirst txtRegStdNo.Text = Rs.Fields(2) txtRegName.Text = Rs.Fields(3) txtRegPhone.Text = Rs.Fields(4) txtRegAddr.Text = Rs.Fields(5) End If Call RsClose Call DBClose End Sub

28 사용자 등록 모듈 이제 UID 값이 표시가 되면 Load 버튼을 눌렀을 때 Database 에 이미 등록된 사용자가 있다면 사용자에 대한 정보가 아래 그 림과 같이 표시 됩니다.

29 사용자 등록 모듈 그러나, Database에 등록된 사용자가 없다면 아래의 그림과 같 은 창이 표시되고 Tag 값과 사용자의 정보를 Database에 입력 할 수 있습니다. 표시된 UID와 함께 학번, 성명, 전화번호, 주소를 입력 후 Save 버튼을 누르면 Database에 Tag 값과 함께 사용자의 정보가 등 록 됩니다.

30 사용자 등록 모듈 정보를 등록하기 위해 Save 버튼을 더블클릭 해서 나온 코드창 에 아래와 같이 구현합니다.
Private Sub btnRegRegist_Click() If DBOpen = False Then MsgBox "Db Connection Failed.", vbExclamation, "Db Connection" Call DBClose End End If Dim sSql As String Dim msg Dim sDate As String

31 사용자 등록 모듈 If txtRegStdNo.Text = "" Then
MsgBox "학번을 입력하세요.", vbInformation, "등록" Exit Sub End If If txtRegName.Text = "" Then MsgBox "이름을 입력하세요.", vbInformation, "등록" If txtRegPhone.Text = "" Then MsgBox "전화번호를 입력하세요.", vbInformation, "등록" If txtRegAddr.Text = "" Then MsgBox "주소를 입력하세요.", vbInformation, "등록"

32 사용자 등록 모듈 sSql = "SELECT * FROM KIT_ATT_DB WHERE strUID = '" & txtRegUID.Text & "'" Call Execute_SQL(sSql) If sSQLSuccess = False Then Exit Sub If Rs.RecordCount <= 0 Then msg = MsgBox("등록하시겠습니까?", vbQuestion + vbYesNo, "등록") If msg = vbNo Then Exit Sub sDate = Format(Now, "yyyy-mm-dd-hh:mm:ss") sSql = "INSERT INTO KIT_ATT_DB (strUID, strStdNumber, strName, strPhone, strAddress, strDate) VALUES('" & _ txtRegUID.Text & "','" & _ txtRegStdNo.Text & "','" & _ txtRegName.Text & "','" & _ txtRegPhone.Text & "','" & _ txtRegAddr.Text & "','" & _ sDate & "'" & _ ")"

33 사용자 등록 모듈 Call Execute_SQL(sSql) If sSQLSuccess = True Then
MsgBox "등록되었습니다.", vbInformation, "등록" End If Else msg = MsgBox("수정하시겠습니까?", vbQuestion + vbYesNo, "수정") If msg = vbNo Then Exit Sub sDate = Format(Now, "yyyy-mm-dd-hh:mm:ss") sSql = "UPDATE KIT_ATT_DB SET " & _ "strStdNumber='" & txtRegStdNo.Text & "'," & _ "strName='" & txtRegName.Text & "'," & _ "strPhone='" & txtRegPhone.Text & "'," & _ "strAddress='" & txtRegAddr.Text & "'," & _ "strDate='" & sDate & "'" & _ "where strUID = '" & txtRegUID.Text & "'"

34 사용자 등록 모듈 Call Execute_SQL(sSql) If sSQLSuccess = True Then
MsgBox "수정되었습니다.", vbInformation, "수정" End If Call RsClose Call DBClose End Sub

35 사용자 등록 모듈 사용자 등록을 하면 아래 그림과 같이 Database에 정보가 등록 되는 것을 볼 수 있습니다.

36 출결 체크 모듈 이전 강좌에서는 사용자를 등록하는 모듈을 작성했습니다. 이번 강좌에서는 등록된 사용자 Tag를 이용해 출결 체를 하는 모듈을 구현 해 보겠습니다. 출결 체크 모듈의 기본 폼은 아래 그림과 같 습니다.

37 출결 체크 모듈 사용자는 등록된 Tag를 리더기에 가져다 대고 Read UID버튼을 클릭 합니다. 아래 그림과 같이 UID부분에 현재 접촉한 Tag의 UID값이 표시가 됩니다.

38 출결 체크 모듈 다음 Load Info. 버튼을 클릭합니다. 그러면 해당하는 Tag의 UID 값을 가진 정보를 Database에서 불러와 거기 학번, 성명등 의 정보를 텍스트 창에 표시 합니다.

39 출결 체크 모듈 사용자의 정보를 조회 한 다음, 입실 버튼을 누르면 현재 입실한 시간을 표시 해 주고 현재 시간을 Database에 저장을 합니다. 퇴 실의 경우도 마찬가지로 퇴실 시간을 Database에 저장을 합니 다.

40 출결 체크 모듈 입실과 퇴실이 체크가 되면 아래쪽의 DataGrid에 출결 현황이 개인별로 표시가 됨을 볼 수 있습니다.
출결 체크 모듈은 크게 Read UID, Load Info., 입실, 퇴실 등의 출결체크에 관한 기능들과, 사용자 등록창을 열어주는 Regist Students 기능과 수업 일자를 Database의 Table에 필드를 삽 입하는 기능으로 구성되어 있습니다.

41 출결 체크 모듈 먼저 Read UID 기능을 구현 하겠습니다. Read UID기능은 이전 강좌에서도 많이 했던 Tag의 UID값을 읽어 오는 기능입니다. Tag를 리더기에 가져다 대고 Read UID버튼을 누르면 Tag의 UID값을 읽어와 텍스트 창에 표시하는 기능입니다. Read UID 버튼을 더블클릭 해서 나온 코드 창에 다음과 같이 구현합니다. Private Sub btnMainReadUID_Click() txtMainStdNo.Text = "" txtMainName.Text = "" txtMainInTime.Text = "" txtMainOutTIme.Text = "" Call NeoRF13Ocx1.UID_Read End Sub

42 출결 체크 모듈 읽어온 UID값을 텍스트 박스에 표시하는 방법도 앞서 설명한 것 과 동일 합니다.
Private Sub NeoRF13Ocx1_OnData(ByVal sData As String) txtMainUID.Text = sData End Sub

43 출결 체크 모듈 Tag의 UID값을 읽어온 다음 Load Info. 버튼을 클릭 하면 UID 값으로 저장된 정보를 Database로부터 읽어 옵니다. 폼 창에서 Load Info. 버튼을 더블클릭 하여 다음과 같이 구현 합니다. Private Sub btnLoadInfo_Click() Call GetData End Sub

44 출결 체크 모듈 Sub GetData() If DBOpen = False Then
MsgBox "Db Connection Failed.", vbExclamation, "Db Connection" Call DBClose End End If Dim sSql As String Dim sAddItem As String Dim iRow As Double Dim i As Integer Dim strItem As String strItem = ""

45 출결 체크 모듈 sSql = "SELECT * FROM KIT_ATT_DB WHERE strUID = '"
& txtMainUID.Text & "'" Call Execute_SQL(sSql) If sSQLSuccess = False Then Exit Sub If Rs.RecordCount <= 0 Then MsgBox "검색 결과가 없습니다.", vbInformation, "검색" Exit Sub Else Rs.MoveFirst txtMainStdNo.Text = Rs.Fields(2) txtMainName.Text = Rs.Fields(3)

46 출결 체크 모듈 Do While Not Rs.EOF On Error Resume Next sAddItem = ""
For i = 0 To Rs.Fields.Count - 1 grdData.ColWidth(i) = 2000 grdData.ColAlignment(i) = 4 grdData.TextMatrix(0, i) = Rs.Fields(i + 1).Name grdData.TextMatrix(1, i) = Rs.Fields(i + 1) Next Rs.MoveNext Loop End If Call RsClose Call DBClose End Sub

47 출결 체크 모듈 읽어온 정보를 확인 하고, 입실 버튼을 클릭 하게 되면 현재의 시 간이 Database의 입실 필드에 저장이 됩니다. 폼 디자인 창에서 입실 버튼을 더블클릭 하고 다음과 같이 구현합니다. Private Sub btnCheckIn_Click() Dim TimeIn As String strTodayDate = Format(Now, "yyyymmdd") TimeIn = strTodayDate & "_In" strInTime = Format(Now, "yyyy-mm-dd-hh:mm:ss") If DBOpen = False Then MsgBox "Db Connection Failed.", vbExclamation, "Db Connection" Call DBClose End End If

48 출결 체크 모듈 Dim sSql As String Dim sAddItem As String Dim iRow As Double
Dim i As Integer txtMainInTime.Text = strInTime sSql = "SELECT * FROM KIT_ATT_DB WHERE strUID = '" & txtMainUID.Text & "'" Call Execute_SQL(sSql) If sSQLSuccess = False Then Exit Sub If Rs.RecordCount <= 0 Then MsgBox "학생 정보가 없습니다. 먼저 등록을 하세요.", vbInformation, "검색" Exit Sub

49 출결 체크 모듈 Else sSql = "UPDATE KIT_ATT_DB SET " & _
TimeIn & "='" & strInTime & "'" & _ "where strUID = '" & txtMainUID.Text & "'" Call Execute_SQL(sSql) If sSQLSuccess = True Then MsgBox "입실처리 되었습니다.", vbInformation, "수정" End If Call RsClose Call DBClose Call GetData End Sub

50 출결 체크 모듈 퇴실 기능도 입실기능과 동일합니다. 퇴실 버튼을 더블클릭 한 후 아래와 같이 구현합니다.
퇴실 기능도 입실기능과 동일합니다. 퇴실 버튼을 더블클릭 한 후 아래와 같이 구현합니다. Private Sub btnCheckOut_Click() Dim TimeOut As String strTodayDate = Format(Now, "yyyymmdd“) TimeOut = strTodayDate & "_Out” strOutTime = Format(Now, "yyyy-mm-dd-hh:mm:ss") If DBOpen = False Then MsgBox "Db Connection Failed.", vbExclamation, "Db Connection" Call DBClose End End If

51 출결 체크 모듈 Dim sSql As String Dim sAddItem As String Dim iRow As Double
Dim i As Integer txtMainOutTIme.Text = strOutTime sSql = "SELECT * FROM KIT_ATT_DB WHERE strUID = '" & txtMainUID.Text & "'" Call Execute_SQL(sSql) If sSQLSuccess = False Then Exit Sub If Rs.RecordCount <= 0 Then MsgBox "학생 정보가 없습니다. 먼저 등록을 하세요.", vbInformation, "검색" Exit Sub

52 출결 체크 모듈 Else sSql = "UPDATE KIT_ATT_DB SET " & _
TimeOut & "='" & strOutTime & "'" & _ "where strUID = '" & txtMainUID.Text & "'" Call Execute_SQL(sSql) If sSQLSuccess = True Then MsgBox "퇴실처리 되었습니다.", vbInformation, "수정" End If Call RsClose Call DBClose Call GetData End Sub

53 출결 체크 모듈 사용자 등록을 위한 Regist Student 기능은 버튼을 클릭하면 이 전 강좌에서 구현한 사용자 등록화면을 호출 하는 부분이므로 간 단히 폼만 호출 하는 구문으로 구현되어 있습니다. Regist Students버튼을 더블클릭 한 후 아래와 같이 구현합니다. Private Sub btnRegist_Click() Load frmRegist frmRegist.Show End Sub

54 출결 체크 모듈 AddField 기능은 수업이 있는 날짜를 Database의 Table에 현 재 날짜의 Field를 추가 하는 기능으로 수업 시작 전에 반드시 추 가를 하여 학생들이 출결체크를 할 수 있도록 하는 기능입니다. AddField 버튼을 더블클릭하여 아래와 같이 구현합니다. Private Sub btnAddField_Click() If DBOpen = False Then MsgBox "Db Connection Failed.", vbExclamation, "Db Connection" Call DBClose End End If Dim sSql As String Dim msg Dim AddFieldName_1 As String Dim AddFieldName_2 As String

55 출결 체크 모듈 strTodayDate = Format(Now, "yyyymmdd")
AddFieldName_1 = strTodayDate & "_In" sSql = "ALTER TABLE KIT_ATT_DB ADD COLUMN " & AddFieldName_1 & " Text(255)" Call Execute_SQL(sSql) AddFieldName_2 = strTodayDate & "_Out" & AddFieldName_2 & " Text(255)" Call RsClose Call DBClose End Sub


Download ppt "RFID Programming (출결관리 프로그램)"

Similar presentations


Ads by Google