Rabu, 05 Agustus 2015

TAWARAN JUDUL PROYEK AKHIR UNTUK YANG SEDANG MENJALANINYA TAHUN INI

Bismillahirrahmanirrahim 
Berikut Penawaran Judul PA buat Yang mengambil PA semester ini : (Semangat Guys (y) )


1. SISTEM INFORMASI PERINGATAN SERVICE PADA SEPEDA MOTOR 
Deskripsi Singkat :
Service merupakan kebutuhan yang sangat diperlukan untuk menjaga kondisi kendaraan tetap prima, kebutuhan ini sangat diperlukan oleh setiap pengguna sepeda motor. Pada penelitian ini akan diimplementasikan pada bengkel resmi honda,yamaha, ataupun bengkel motor resmi lainnya. Sistem ini terdiri dari modul GSM sebagai interface untuk peringatan service melalui SMS yang diatur pada web dengan memanfaatkan jarak atau tempo bulan.

2. ALAT BANTU PENUNJUK ARAH KIBLAT DENGAN OUTPUT SUARA UNTUK PENYANDANG TUNA NETRA                                                  

Deskripsi Singkat  :                                                             Keterbatasan jasmani membuat para penyandang tuna netra harus selalu bergantung kepada orang disekitar untuk dapat melalukan aktifitasnya, Khususnya pada saat melakukan aktifitas rohani seperti ibadah terutama sholat. Oleh karena itu sangat perlu adanya alat bantu atau pengingat sholat untuk para penyandang tuna netra, agar meraka dapat secara mandiri mekakukan sholat tanpa harus bergantung dengan orang-orang disekitar. Alat ini dibuat dengan menggunakan kompas digital untuk penunjuk arahnya yang diproses oleh mikrokontroler, kemudian mengambil data suara yang telah diisi sebelumnya pada sdCard dan dikeluarkan melalui speaker berupa suara.

3. ALAT BANTU MONITORING PETUGAS KEAMANAN GEDUNG/APARTMENT BERBASIS RFID Deskripsi Singkat  :                                                             
Saat ini pembangunan gedung didaerah perkotaan semakin banyak. Pada gedung tersebut pasti akan membutuhkan penjagaan yang berkala untuk memaksimalkan kinerja security officers sehingga factor keamanan juga terjaga. Sistem keamanan yang akan dipakai bersifat monitoring dibuat berkala sesuai jadwal yang ditentukan oleh owner perusahaan. 

4. SISTEM MONITORING PEMAKAIAN KWH METER DIGITAL VIA ANDROID             Deskripsi Singkat  :                                                                                                
Teknologi informasi telah berkembang sangat cepat dan telah banyak tercipta peralatan yang dapat membantu meringankan pekerjaan manusia. Akan tetapi pada saat pengecekan kwh meter umumnya petugas yang datang untuk melakukan pengecekan pemakaian beban listrik hanya dengan cara dicatat saja. maka dari itu perlu dibuat suatu sistem informasi yang dapat memudahkan petugas dalam pencatatan kwh Meter digital berbasis via android, sehingga nantinya memudahkan petugas yang datang ke rumah pelanggan untuk melihat nilai besarnya kwh meter digital dan memonitor dengan jarak jauh serta petugas tidak harus masuk di rumah pelanggan. 

5.RANCANG BANGUN SISTEM BACK UP PLN MENGGUNAKAN BOOST CONVERTER DAN FLYBACK CONVERTER BERBASIS MIKROKONTROLER UNTUK BEBAN PENERANGAN                                                                         

Deskripsi Singkat  :                                                                                                          
Pada saat ini, pemadaman listrik oleh PLN sering terjadi hal ini disebabkan semakin besarnya konsumsi listrik. Pemadaman listrik dapat menyebabkan aktifitas keseharian terganggu. Pendistribusian listrik oleh PLN yang masih belum merata juga menyebabkan beberapa daerah belum bisa menggunakan energi listrik. sangat dibutuhkan merancang pemanfaatan akumulator sebagai sumber tenaga listrik back up saat PLN mengalami pemadaman.


Judul ini Insya Allah bakal diterima karena di kampus Tel-U belum ada sebelumnya cek dulu aja ke perpus apakah judul ini sudah ada kalo males ya langsung tanyakan saja kepada dosen.
Silahkan Konsultasikan kepada Dosen yang akan kalian jadikan pembimbing jika di ACC alhamdulillah jika belum jangan menyerah guys
semoga judul yang saya berikan membantu dan kalian sukses dalam mengerjakannya aamiin yarabbalalamin 
semangat :D :D
bisa juga menghubungi ane di id line : aasp10 atau no hp :082134509515


Gondes Semarang
AASP

Jumat, 12 Juni 2015

Persiapan Belajar pemogramanan LCD


Sebelum belajar memprogram LCD. Anda harus terlebih dahulu mengetahui bagaimana menggunakan LCD, merangkai dan memberikan tegangan ke tiap bit data, RS, dan R/W nya. berikut penjelasan tentang LCD. Dari sini diperlukan persiapan sebelum belajar pemograman LCD.

LCD (Liquid Cristal Display) merupakan komponen elektronika sebagai display yang terbuat dari teknologi CMOS logic yang bekerja dengan memantulkan cahaya yang terdapat di sekelilingnya. Jadi LCD (Liquid Cristal Display) memiliki fungsi untuk menampilkan data baik itu dalam bentuk karakter, angka, huruf maupun grafik.

Bahan pembuat LCD (Liquid Cristal Display) adalah  lapisan yang terdiri dari campuran organik antara lapisan kaca bening dengan elektroda transparan indium oksida berbentuk seven-segment dan lapisan elektroda yang terdapat pada kaca belakang. Ketika elektroda tersebut diaktifkan dengan memberi tegangan (medan listrik), molekul organik yang panjang dan silindris menyesuaikan diri dengan elektroda dari segmen. Lapisan tersebut memiliki polarisasi cahaya vertikal depan dan polarisasi cahaya horisontal belakang yang diikuti dengan lapisan reflektor. Cahaya yang dipantulkan tidak bisa melewati molekul yang telah menyesuaikan diri dan segmen yang diaktifkan terlihat menjadi gelap dan membentuk karakter data yang ingin ditampilkan.




Pengendali / Kontroler LCD (Liquid Cristal Display) 
Pada modul LCD (Liquid Cristal Display) di atas terdapat microcontroller yang memiliki fungsi untuk mengendalikan tampilan LCD (Liquid Cristal Display). Microntroller yang terdapat pada LCD (Liquid Cristal Display) tersebut dilengkapi dengan register dan memori. Berikut memori yang terdapat pada mikrokontroler internal LCD adalah : 
  • DDRAM (Display Data Random Access Memory) adalah memori tempat ditampilkannya karakter
  • CGRAM (Character Generator Random Access Memory) adalah memori yang digunakan untuk menggambarkan bentuk/pola dari sebuah karakter yang mana bentuk karakternya dapat dirubah sesuai dengan keinginan.
  • CGROM (Character Generator Read Only Memory) adalah memori yang digunakan untuk menggambarkan suatu pola dari sebuah karakter yang mana pola tersebut adalah karakter dasar yang sudah ditetapkan oleh pabrik pembuat LCD secara permanen sehingga pengguna tinggal mangambilnya karakter tersebut sesuai alamat memori dari karakter tersebut serta tidak dapat mengubah karakter dasar yang ada dalam CGROM.


Register control yang terdapat dalam suatu LCD diantaranya adalah.
  • Register perintah yaitu register yang berguna untuk memberikan perintah ke LCD (Liquid Cristal Display) 
  • Register data yaitu register untuk menulis dan membaca ke dalam LCD contoh register DDRAM


Pin, kaki atau jalur input dan kontrol dalam suatu LCD (Liquid Cristal Display) diantaranya adalah :
  • Pin 1 dan 2
  • Merupakan catu daya. Pin 1 dihubungkan ke ground dan Pin 2 dihubungkan ke Vcc(+5V). Pin ini memberikan tegangan suply untuk menghidupkan LCD
  • Pin 3
  • merupakn pin yang dihubungkan dengan Rheostat/Trimpot yang berguna untuk mengatur tingkat kontras dari LCD. Sehingga tingkat pencahayaan LCD dapat kita atur dengan memutar rheostat tersebut
  • Pin 4
  • Merupakan pin RS(Register Select dai LCD)
  • Pin 5
  • Merupakan pin R/W berguna untuk melakukan penulisan atau pembacaan ke LCD. Pin ini dihubungkan ke kaki mikrokontroler kita
  • Pin 6
  • Merupakan pin berguna untuk Enable
  • Pin 7 sampai 14
  • Merupakan pin untuk data (D0-D7)
  • Pin 15 dan 16
  • Merupakan Pin 15 dan 16 berguna untuk backlight/ cahaya latar. Pin 15 Untuk anoda A(+) sedangkan pin 16 untuk katoda K (-)


Beikut adalah gambar tabel perintah LCD(Untuk mengontrol LCD). LCD yang dikontrol diberi sinyal pada D0-D7 serta RS dan R/W seperti pada tabel di bawah ini:

Poster PA






Pointer Internal Eeprom

Pointer adalah sebuah variabel yang berisikan alamat memori (bukan nilai) atau dengan kata lain dapat dikatakan bahwa pointer adalah suatu variabel penunjuk ke alamat memori tertentu. Secara umum, pointer dapat digambarkan sebagai berikut.



 Ilustrasi Pointer

Dari gambar di atas, dapat kita lihat bahwa pointer P sedang menunjuk ke alamat ke-1, ini berarti bahwa nilai dari pointer P adalah alamat ke-1. Hal ini berbeda dengan variabel biasa yang hanya dapat menyimpan nilai dengan tipe data tertentu.

Keuntungan menggunakan pointer ini adalah kita dapat mengakses data dengan ukuran yang besar dengan waktu yang relative lebih cepat bila dibandingkan dengan variabel biasa ataupun variabel array. Selain itu, untuk menunjuk lokasi memori tertentu dapat dilakukan ketika program aplikasi sedang dijalankan sehingga ini menjadi lebih flrksibel.

1. DEKLARASI POINTER

A. Deklarasi Pointer Dengan Tipe
Adapun cara pendeklarasian pointer di dalam bahasa C adalah dengan menambahkan tanda asterik (*)di depan nama pointer yang akan dibuat. Berikut bentuk umumnya.

tipe_data *nama_pointer;

Contoh:

char *pointermu;
int *data_pointer = 0x90;

Pada deklarasi pointer pertama diatas, kita mendefinisikan sebuah pointer yang digunakan untuk menunjuk sebuah data di memori tetapi belum ditentukan alamat memori yang dimaksud sedangkan pada deklarasi kedua sudah ditentukan alamat memorinya yaitu 0x90.
Keluarga mikrokontroler AVR memiliki 3 kelompok memori yaitu memori program (flash memory), memori data (SRAM), dan memori EEPROM. Sehingga untuk mendeklarasikan sebuah pointer kita juga harus mendefinisikan alamat memori manakah yang kita tuju apakah memori program, memori data, atau memori EEPROM. Perbedaan cara deklarasi ketiga jenis memori tersebut adalah sebagai berikut.

char flash *pointer_di_flash;   // pointer di memori program
char eeprom *pointer_di_eeprom; // pointer di memori EEPORM
char *pointer_di_ram;           // pointer di memori SRAM

B. Deklarasi Pointer Tanpa Tipe
Sebelumnya kita telah mempelajari bahwa pointer yang dideklarasikan dengan tipe data tertentu (misalnya tipe int), hanya dapat menunjuk alamat yang berisi variabel dengan tipe data yang sesuai (dalam hal ini tipe int). Dengan kata lain pointer tersebut tidak dapat digunakan untuk menunjuk ke alamat yang berisi variabel dari tipe data lain seperti floatdoublechar, maupun lainnya.
Dalam bahasa C terdapat cara khusus untuk membuat pointer tersebut dapat menunjuk ke alamat – alamat yang berisi variabel dari tipe data apapun, yaitu dengan menggunakan kata kunci ‘void’ pada saat pendeklarasiannya. Maka dari itu, pointer seperti ini sering disebut dengan istilah pointer tanpa tipe (void pointer). Berikut ini bentuk umum untuk mendeklarasikan suatu pointer tanpa tipe.

void *nama_pointer;

Contoh:

void *t;
void *data = 0xFE;

2. POINTER DAN ARRAY
Dalam bahasa C pointer dan array saling berhubungan. Anggaplah kita memiliki array A yang terdiri dari 10 buah elemen yang bertipe int serta pointer p yang akan menunjuk ke tipe int. Sekarang apabila kita mengeset pointer tersebut untuk menunjuk ke elemen pertama array, maka kita dapat mengakses elemen–elemen dari array A tersebut dengan menggunakan pointer p.

Contoh:

#include<mega8535.h>

int main(void)
{
 int A[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
 int j;
 int *p;

 for(j=0;j<10;j++)
   {
     p = &A[j];
     PORTA = p;
   }

 return 0;
} 


3. POINTER SEBAGAI PARAMETER FUNGSI
Terdapat dua cara untuk melewatkan parameter ke dalam suatu fungsi, yaitu dengan menggunakan pass by value(melewatkan berdasarkan nilai) dan pass by reference (melewatkan berdasarkan alamat). Alamat yang dimaksud di sini tidak lain adalah pointer.

Contoh:

#include<mega8535.h>
int hitung(int *x, int *y)
{
  *x = *y + 0x35;
}

int main(void)
{
 PORTD = hitung(&0x23,&0x10);
 return 0;
}

4. POINTER KONSTAN ( “CONST“)
Pointer dapat bersifat konstan, artinya pointer tersebut hanya dapat menunjuk dari alamat tertentu saja. Untuk melakukan hal ini kita harus menggunakan kata kunci const yang telah disediakan dalam bahasa C. Bentuk umum dari penempatan kata kunci const sebelum tipe data adalah sebagai berikut.

const tipe_data *nama_pointer;


Contoh:

#include<mega8535.h>

int main(void)
{
 const int *p;

 ……………………
 …………

 return 0;
}

5. MENUNJUK ALAMAT SEBUAH VARIABEL
Apabila kita telah membuat deklarasi pointer maka selanjutnya kita dapat menunjuk pada alamat memori tertentu tempat menyimpan sebuah variabel data seperti contoh berikut:

Contoh:

char data = 0x20;
char *alamat;
alamat = &data;


Keterangan program:

Baris pertama,
Mendeklarasikan sebuah variabel bernama ‘data’ dengan tipe ‘char’ (1-byte) dimana isi datanya yaitu 0x20 disimpan di alamat memori tertentu (sebagai contoh misalnya disimpan di alamat 0x90).

Baris kedua,
Mendeklarasikan sebuah pointer dengan nama ‘alamat’ yang digunakan untuk menunjuk alamat memori tertentu yang dalam hal ini belum ditentukan.

Baris ketiga,
Digunakan untuk menyatakan bahwa alamat memori yang digunakan untuk menyimpan variabel ‘data’ adalah pada pointer bernama ‘alamat’, sehingga sekarang pointer sudah menunjuk ke memori variabel ‘data’. Jadi pointer sekarang berisi 0x90 dan data yang ada di alamat memori 0x90 adalah 0x20.

 ---ooo00ooo---

Untuk menyimpan variabel pointer itu sendiri selain menggunakan memori SRAM seperti pada contoh diatas juga dapat menggunakan memori flash atau memori EEPROM. Jadi pointernya dapat disimpan di memori SRAM, memori flash, atau memori EEPROM dan data variabel yang ditunjuk juga dapat disimpan di memori SRAM, memori flash, atau memori EEPROM. Pointer yang disimpan dalam memori flash atau EEPROM dideklarasikan seperti contoh berikut:

1: char *flash pointermu1 = “simpan string di SRAM”;
2: flash char *flash pointermu2 = “simpan string di FLASH”;
3: eeprom char *flash pointermu3 = “simpan string di EEPROM”;
4: char *eeprom pointermu4 = “simpan string ini di SRAM”;
5: flash char *eeprom pointermu5 = “simpan string ini di FLASH”;
6: eeprom char *eeprom pintermu6 = “simpan string ini di EEPROM”;

Keterangan:

Baris 1:
Deklarasi pointer ‘pointermu1’ yang disimpan di memori flash dan variabel datanya berupa string “simpan string di SRAM” disimpan di SRAM.

Baris 2:
Deklarasi pointer ‘pointermu2’ yang disimpan di memori flash dan variabel datanya berupa string “simpan string di FLASH” disimpan di  FLASH.

Baris 3:
Deklarasi pointer ‘pointermu3’ yang disimpan di memori flash dan variabel datanya berupa string “simpan string di FLASH” disimpan di  EEPROM. 

Baris 4:
Deklarasi pointer ‘pointermu4’ yang disimpan di memori EEPROM dan variabel datanya berupa string “simpan string di FLASH” disimpan di  SRAM.

Baris 5:
Deklarasi pointer ‘pointermu5’ yang disimpan di memori EEPROM dan variabel datanya berupa string “simpan string di FLASH” disimpan di  FLASH.

Baris 6:
Deklarasi pointer ‘pointermu6’ yang disimpan di memori EEPROM dan variabel datanya berupa string “simpan string di FLASH” disimpan di  EEPROM. 

Sabtu, 06 Juni 2015

Tutorial EEPROM

#include <mega8535.h>
#include <delay.h>
int eeprom *pointer_eeprom;
int data=0;
int ubah;
int sat,pul,rat,rib;
void write_data_to_eeprom()
{
 *pointer_eeprom=data;
}        
    
void read_data_to_eeprom()
{     
  data=*pointer_eeprom;
} 
void convert_to_format7segment()
{
           if (ubah==0){ubah=0xc0;}
           if (ubah==1){ubah=0xf9;}
           if (ubah==2){ubah=0xa4;}
           if (ubah==3){ubah=0xb0;}
           if (ubah==4){ubah=0x99;}
           if (ubah==5){ubah=0x92;}
           if (ubah==6){ubah=0x82;}
           if (ubah==7){ubah=0xf8;}
           if (ubah==8){ubah=0x80;}
           if (ubah==9){ubah=0x90;}
}
void display_7segment()
{
           PORTC=rib;//send data kedigit5
           PORTD.5=0;
           PORTD.6=0;
           PORTD.7=0;
           delay_ms(5);
           PORTC=rat;//send data kedigit6
           PORTD.5=1;
           PORTD.6=0;
           PORTD.7=0;
           delay_ms(5);
           PORTC=pul;//send data kedigit7
           PORTD.5=0;
           PORTD.6=1;
           PORTD.7=0;
           delay_ms(5);
           PORTC=sat;//send data kedigit8
           PORTD.5=1;
           PORTD.6=1;
           PORTD.7=0;
           delay_ms(5);
}
// Declare your global variables here
void main(void)
           {
 PORTA=0x00;
           DDRA=0x00;
           
           PORTB=0x00;
           DDRB=0x00;
           
           PORTC=0x00;
           DDRC=0xFF;
           
           PORTD=0x07;
           DDRD=0xE0;
           
           TCCR0=0x00;
           TCNT0=0x00;
           OCR0=0x00;
           
           TCCR1A=0x00;
           TCCR1B=0x00;
           TCNT1H=0x00;
           TCNT1L=0x00;
           ICR1H=0x00;
           ICR1L=0x00;
           OCR1AH=0x00;
           OCR1AL=0x00;
           OCR1BH=0x00;
           OCR1BL=0x00;
           
           ASSR=0x00;
           TCCR2=0x00;
           TCNT2=0x00;
           OCR2=0x00;
           
           MCUCR=0x00;
           MCUCSR=0x00;
           
           TIMSK=0x00;
 UCSRB=0x00;
 ACSR=0x80;
           SFIOR=0x00;
 SFIOR&=0x0F;
// SPI initialization
           // SPI disabled
   SPCR=0x00;
 TWCR=0x00;
 pointer_eeprom=0; //addres eeprom tobe write and read
 read_data_to_eeprom();
 while (1)
 {
  if (PIND.0==0)
  {
   data=data+5; // data=data+2; add 5
   delay_ms(200);
   if (data <=0)
   {
    data=0;
   }
   write_data_to_eeprom();
  }
  else if (PIND.1==0)
  {
   data=data-5;
   delay_ms(200);
   if (data <=0)
   {
    data=9999;
   }
   write_data_to_eeprom();
  }
  else if (PIND.2==0)
  {
   data=0;
  }
  sat = data % 10;// sat = modulus
  pul = data / 10;
  pul = pul % 10;
  rat = data / 100;
  rat = rat % 10;
  rib = data / 1000;
  rib=rib%10;
  ubah=sat;
  convert_to_format7segment();
  sat=ubah;
  ubah=pul;
  convert_to_format7segment();
  pul=ubah;
  ubah=rat;
  convert_to_format7segment();
  rat=ubah;
  ubah=rib;
  convert_to_format7segment();
  rib=ubah; 
  display_7segment(); 
 }
}


http://www.mytutorialcafe.com/microcontroller%20AVR%20Tutorial%20and%20Project.htm
         

Selasa, 26 Mei 2015

Pembahasan Fingerprint dari Programmer VB Indonesia

[ASK | VB.NET] Menyimpan data yang sebelumnya belum didownload darifingerprint ke database
Saya sedang membuat aplikasi absensi fingerprint dengan Zkemkeeper.
Saya ada masalah kaya gini :

Pertama saya klik tombol download log datanya, dan semuanya berhasil masuk ke database, lalu pada hari selanjutnya ada penambahan log data, ketika saya download lagi gimana caranya agar hanya penambahan log data tersebut yang masuk ke database, tidak semuanya. Apakah di zkemkeeper ada method seperti itu? atau saya harus bermain di bagian database saja?
Mohon pencerahannya om.
Note : Saya sudah baca buku manualnya dan sejauh ini saya tidak menemukannya. (Takutnya saya yang teledor baca jadi nanya disini).

seingat saya memang nggak ada. setiap kali mengambil log finger print dari mesin, seluruh log akan diload ke memori.

Untuk itu perlu bikin kebijakan sendiri supaya data nggak dua kali dimasukkan ke database.
ada beberapa cara yang bisa dipakai:

1. setelah semua data disimpan ke database, kosongkan /hapus log data mesin. dengan demikian pada pengambilan berikutnya hanya data baru saja yang diambil.

2. bikin filter sendiri. simpan waktu terakhir yang ada di mesin pada pengambilan data terakhir. pada waktu pengambilan data berikutnya, pastikan hanya data yang sesudah waktu terakhir saja yang disimpan. misalnya pada hari ini ada pengambilan data. log terakhir tercatat adalah 2014-10-05 17:15:31. Esok hari, pastikan data yang akan disimpan adalah 
data sesudah 2014-10-05 17:15:31.

kalo mesin bisa komunikasi melalui TCP/IP mending bikin realtime notification aja.

realtime notification ketika terjadi log event.
misal, ketika karyawan melakukan absen.
ketika menempelkan tangan di sensor, data kehadiran otomatis disimpan dikomputer bukan disimpan dimesin.




mengambil fingerprint => mengambil data fingerprint yang diregister di mesin.
http://www.codeproject.com/Questions/639411/Attendance-Machine-and-Asp-Net

Public axCZKEM1 As New zkemkeeper.CZKEM
 

 
Private bIsConnected = False
Private iMachineNumber As Integer
 
'Vb Code  Convert to c#
Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
 
Dim idwErrorCode As Integer
Cursor = Cursors.WaitCursor
If btnConnect.Text = "Disconnect" Then
axCZKEM1.Disconnect()
bIsConnected = False
btnConnect.Text = "Connect"
MsgBox("Disconnected")
Cursor = Cursors.Default
Return
End If
 
bIsConnected = axCZKEM1.Connect_Net(txtIP.Text.Trim(), Convert.ToInt32(txtPort.Text.Trim()))
If bIsConnected = True Then
btnConnect.Text = "Disconnect"
btnConnect.Refresh()
MsgBox("Connected")
iMachineNumber = 1
axCZKEM1.RegEvent(iMachineNumber, 65535)
Else
axCZKEM1.GetLastError(idwErrorCode)
MsgBox("Unable to connect the device,ErrorCode=" & idwErrorCode, MsgBoxStyle.Exclamation, "Error")
End If
Cursor = Cursors.Default
 
End Sub
#End Region
 

''Vb Code  Convert to c#
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dwEnrollNumber As Long
Dim name As String
Dim password As String
Dim privileg As Long
Dim conexaoMySQL As SqlConnection
Dim strSQL As String
Dim dwVerifyMode As Long
Dim dwInOutMode As Long
Dim timeStr As String
Dim enable As Boolean
Dim _data As New System.Text.StringBuilder
Dim _errorCode As Integer
Dim _machineNumber As Integer
Dim _enrollNumber As Integer
Dim _enrollMachineNumber As Integer
Dim _verifyMode As Integer
Dim _inOutMode As Integer
Dim _year As Integer
Dim _month As Integer
Dim _day As Integer
Dim _hour As Integer
Dim _minute As Integer
 
axCZKEM1.ReadMark = True
axCZKEM1.GetLastError(_errorCode)
axCZKEM1.ReadAllUserID(1)
axCZKEM1.ReadMark = True
If (axCZKEM1.ReadGeneralLogData(1)) Then
axCZKEM1.GetLastError(_errorCode)
While axCZKEM1.GetGeneralLogData(1, _machineNumber, _enrollNumber, _enrollMachineNumber, _verifyMode, _inOutMode, _year, _month, _day, _hour, _minute)
axCZKEM1.GetGeneralLogDataStr(1, dwEnrollNumber, dwVerifyMode, dwInOutMode, timeStr)
axCZKEM1.GetUserInfo(1, dwEnrollNumber, name, password, privileg, enable)
Dim data1 As Integer = 0
Dim data2 As Integer = 1000000
conexaoMySQL = New SqlConnection("Data Source=Ahmad-PC;Initial Catalog=HR;User ID=sa;Password=*******")
If data1.ToString < _minute Then
strSQL = "INSERT INTO InOut (dwEnrollNumber,name,password,privileg,dwVerifyMode,dwInOutMode,timeStr,_machineNumber,_enrollNumber,_enrollMachineNumber,_verifyMode,_inOutMode,_year,_month,_day,_hour,_minute) VALUES ( '" & dwEnrollNumber & "','" & name & "','" & password & "','" & privileg & "','" & dwVerifyMode & "','" & dwInOutMode & "','" & timeStr & "','" & _machineNumber & "','" & _enrollNumber & "','" & _enrollMachineNumber & "','" & _verifyMode & "','" & _inOutMode & "','" & _year & "','" & _month & "', '" & _day & "','" & _hour & "','" & _minute & "')"
 
End If
Dim cmd As New SqlCommand(strSQL, conexaoMySQL)
conexaoMySQL.Open()
cmd.ExecuteNonQuery()
conexaoMySQL.Close()
End While
End If
axCZKEM1.RefreshData(1)
Dim query As String = "SELECT * FROM InOut"
Dim connection As New SqlConnection("Data Source=Ahmad-PC;Initial Catalog=HR;User ID=sa;Password=*******")
Dim da As New SqlDataAdapter(query, connection)
Dim ds As New DataSet()
If da.Fill(ds) Then
DataGridView5.DataSource = ds.Tables(0)
End If
DataGridView5.FirstDisplayedScrollingRowIndex = DataGridView5.Rows.Count - 1
 
End Sub

Gan saya sudah melakukan script yang agan kasih waktu itu yang ada di code project ketika saya cek inputan di database malah masuk data ini bukan data kehadiran karyawannya.
Data itu buat apa ya?



itu data kehadiran, dan disitu juga ada juga informasi dari specified user (axCZKEM1.GetUserInfo).

pada fungsi ini : axCZKEM1.GetGeneralLogData(1, _machineNumber, _enrollNumber, _enrollMachineNumber, _verifyMode, _inOutMode, _year, _month, _day, _hour
 _minute)

itu data kehadiran gan?
tapi ketika saya jalankan perintah nya dua kali gak bisa, harusnya kan semua data karyawan yang absen muncul semua..


untuk yang verifyMode dan inOutMode nilai nya 0 disini mas

mmm gmana ya..
coba pada axCZKEM1.GetUserInfo(1, dwEnrollNumber, name, password, privileg, enable)
pada argument dwEnrollNumber ganti dengan user id yang sering absen.

lalu jalankan lagi.

inOutMode 0 = Check in, 1 = Check out.
kalo verify mode 0 berarti terdapat beberapa kemungkin. bisa dengan sidik jari, bisa dengan password atau dengan RF.

Dim dwEnrollNumber As Long . itu berarti dwEnrollNumber nilainya 0 kan?

[ASK][Codingan dari Penanya]
Private Sub BtnGetData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim dwEnrollNumber As Long
Dim name As String
Dim password As String
Dim privileg As Long
Dim strSQL As String
Dim dwVerifyMode As Long
Dim dwInOutMode As Long
Dim timeStr As String
Dim enable As Boolean
Dim _data As New System.Text.StringBuilder
Dim _errorCode As Integer
Dim _machineNumber As Integer
Dim _enrollNumber As Integer
Dim _enrollMachineNumber As Integer
Dim _verifyMode As Integer
Dim _inOutMode As Integer
Dim _year As Integer
Dim _month As Integer
Dim _day As Integer
Dim _hour As Integer
Dim _minute As Integer

zkem.ReadMark = True
zkem.GetLastError(_errorCode)
zkem.ReadAllUserID(1)
zkem.ReadMark = True
If (zkem.ReadGeneralLogData(1)) Then
zkem.GetLastError(_errorCode)
zkem.GetGeneralLogData(1, _machineNumber, _enrollNumber, _enrollMachineNumber, _verifyMode, _inOutMode, _year, _month, _day, _hour, _minute)
zkem.GetGeneralLogDataStr(1, dwEnrollNumber, dwVerifyMode, dwInOutMode, timeStr)
zkem.GetUserInfo(1, dwEnrollNumber, name, password, privileg, enable)
Dim data1 As Integer = 0
Dim data2 As Integer = 1000000

konek()
strSQL = "INSERT INTO tb_data (dwEnrollNumber,name,password,privileg,dwVerifyMode,dwInOutMode,timeStr,_machineNumber,_enrollNumber,_enrollMachineNumber,_verifyMode,_inOutMode,_year,_month,_day,_hour,_minute) VALUES ( '" & dwEnrollNumber & "','" & name & "','" & password & "','" & privileg & "','" & dwVerifyMode & "','" & dwInOutMode & "','" & timeStr & "','" & _machineNumber & "','" & _enrollNumber & "','" & _enrollMachineNumber & "','" & _verifyMode & "','" & _inOutMode & "','" & _year & "','" & _month & "', '" & _day & "','" & _hour & "','" & _minute & "')"
Dim cmd As MySqlCommand

Try
cmd = New MySqlCommand(strSQL, conn)
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox("GAGAL", MsgBoxStyle.Critical, "Kesalahan")
End Try
End If
End Sub

dwVerifyMode adalah data long. anda menyimpannya ke database sebagai varchar.
coba lihat juga alternatif lain dari fungsi-fungsi itu. Di SDK yang saya punya , selain fungsi/method GetGeneralLogData() ada alternatif method yang tujuannya sama: SSR_GetGeneralLogData(). Ini mungkin method baru yang dibuat sebagai pengganti method yang lama.
itu kan belum di iterasikan mas.
while zkem.GetGeneralLogData(1, _machineNumber, _enrollNumber, _enrollMachineNumber, _verifyMode, _inOutMode, _year, _month, _day, _hour, _minute)


end while


yap GetGeneralLogData digunakan untuk mengambil attendance records.
Yang perlu diperhatikan layar mesinnya apakah BW atau TFT. Yang saya tau kalo beda layar beda algoritmanya.
coba di tampilkan ke tabel dahulu saja.
coba source ini.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim UserID As Integer
Dim Verify As Integer
Dim InOut As Integer

Dim iYear As Integer
Dim iMonth As Integer
Dim iDay As Integer
Dim iHour As Integer
Dim iMinute As Integer

Dim eMachineNumber As Integer
Dim tMachineNumber As Integer

Dim lvItem As New ListViewItem("Items", 0)

Dim i As Integer = 0

With ListView2
.View = View.Details
.GridLines = True
.Columns.Add("No.", 100)
.Columns.Add("User ID", 100)
.Columns.Add("Verify", 100)
.Columns.Add("InOut Mode", 100)
.Columns.Add("Date and Time", 100)
End With

Dim strDateTime As String = String.Empty

ListView2.Items.Clear()
If axCZKEM1.ReadGeneralLogData(1) Then
While axCZKEM1.GetGeneralLogData(1, tMachineNumber, UserID, eMachineNumber, Verify, InOut, iYear, iMonth, iDay, iHour, iMinute)
i += 1

strDateTime = iYear & "-" & iMonth & "-" & iDay & " " & iHour & ":" & iMinute

lvItem = ListView2.Items.Add(i.ToString())
lvItem.SubItems.Add(UserID)
lvItem.SubItems.Add(Verify)
lvItem.SubItems.Add(InOut)
lvItem.SubItems.Add(strDateTime)

Application.DoEvents()
End While
End If
End Sub

Cara ngeliat bedanya BW atau TFT gimana gan?
BW(Hitam putih) TFT (Warna) disesuaikan dengan display layar anda.


gan saya udah coba source code yang agan kasih..
Tapi UserID nya kok gitu ya?
itu user ID apa?


"kalo mau ngambil user id yang 1,2,3,4 sama 11 gimana ya?"
Harus dipahami dulu pdf yang diberikan oleh mastah VB itu. Disitu setidaknya ada tiga konsep terpisah:
a. mengambil data user

b. mengambil data template sidik jari
c. mengambil log sidik jari (yaitu data scan pada saat orang melakukan presensi).

masing-masing konsep bisa memiliki lebih dari satu method. nah pelajari dulu itu.

sepengetahuan saya, data yang diambil dari mesin tidak bisa diquery dengan filter tertentu. misalnya, kita tidak bisa mengambil data user A atau B saja. Setiap kali menjalankan perintah pengambilan data, semua data akan diambil dan ditaruh di dalam memori (komputer/pc). 
bila anda ingin memfilternya ,lakukan itu pada saat iterasi.

while zkem.GetGeneralLogData (..................)
if userid = 0 then 
continue while '<skip pembacaan
end if

i+=1
lsitem.add (...........)
end while

ok deh saya pelajari lagi, tapi pasti memerlukan waktu yang agak lama..
Nah sambil saya belajar saya mau tanya dulu sebelum nya, kan mas ezra bilang ada 3 tahapan yaitu mengambil data user, data template sidik jari, mengambil log sidik jari..


Dan source code yang mas Nur kasih itu mengambil log sidik jari kan?
Nah kalo ingin di relasikan dengan data user, field mana yang di hubungkan?

"Nah kalo ingin di relasikan dengan data user, field mana yang di hubungkan"
field dwenrollnumber

oh gitu, oiya mas ezra berkenan gak kalo mas menjelaskan masing masing variabel ini 

1, _machineNumber, _enrollNumber, _enrollMachineNumber, _verifyMode, _inOutMode, _year, _month, _day, _hour, _minute


soalnya saya bingung bagian itu juga

 itu di method apa?
kalau method yang anda pakai tidak ada di manual itu, berarti method itu sudah obsolete. pakai method yang namanya mirip yang ada di manual itu.
contoh, bila di manual tidak ada method GetGeneralLogData, coba pakai SSR_GetGeneralLogData(), kurang lebih fungsinya sama, dengan penambahan parameter out saja.
contoh, bila di manual tidak ada method GetGeneralLogData, coba pakai SSR_GetGeneralLogData(), kurang lebih fungsinya sama, dengan penambahan parameter out saja.

 "kata 'method' disini apa maksudnya mas saya belum ngerti"
method adalah function /procedure dari suatu class.

class foo()
function dosomething() as integer << this is method
end function 

property something as string << this is property
end class

gan saya udah coba 2 method.. kalo yang pake SSR_GetGeneralLogData itu hasil date nya kaya gini

Kalo pake GetGeneralLogData date nya malah jadi gini


ko aneh ya. colonthree emotikon bahkan verify dan IO mode tidak sesuai. 

coba mothod lain dari ReadGeneralLogData. Selain method tersebut anda juga bisa menggunakan ReadAllGLogData dengan Parameter yang sama.
Kemudian untuk mengambil attendance records, selain GetGeneralLogData dan SSR_GetGeneralLogData, ada metode lain yang bisa dipakai, yaitu GetAllGLogData, GetGeneralLogDataStr, dan GetGeneralExtLogData. 
Masing2 method memilik parameter yang berbeda, silahkan disesuaikan.

sebagai contoh , terlihat di situ
while zkem.ssr_GetGeneralLogData (1, theMachineNumber, userId, .....


Padahal argumen pertama adalah MachineNumber, dan argumen kedua adalah UserId. 

kayaknya TS nggak hati-hati nih dalam mengkoding.

[ASK][Coding dari Penanya]
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim UserID As String
Dim Passwd As String

Dim Privilege2 As Integer

Dim dwEnrollNumber As String

Dim lvItem As New ListViewItem("Items", 0)

Dim ii As Integer = 0

With ListView3
.View = View.Details
.GridLines = True
.Columns.Add("No.", 100)
.Columns.Add("Enroll", 100)
.Columns.Add("User Name", 100)
.Columns.Add("Password", 100)
.Columns.Add("Privilege", 100)
.Columns.Add("Privilege", 100)
End With

ListView3.Items.Clear()
If zkem.ReadAllUserID(1) Then
While zkem.GetUserInfo(1, dwEnrollNumber, UserID, Passwd, Privilege2, Enabled)
ii += 1

lvItem = ListView3.Items.Add(ii.ToString())
lvItem.SubItems.Add(dwEnrollNumber)
lvItem.SubItems.Add(UserID)
lvItem.SubItems.Add(Passwd)
lvItem.SubItems.Add(Privilege2)

Application.DoEvents()
End While
End If
End Sub

jadi kalo script itu dieksekusi hasilnya kaya gitu.
terus aja gak berhenti berhenti..

"While zkem.GetUserInfo(1, dwEnrollNumber, UserID, ...................)"

coba ganti Getuserinfo jadi getAllUserinfo .

Wah asli tokcer gan, tapi saya rubah dikit jadi SSR_GetUserInfo soalnya kalo GetUserInfo hasilnya kaya gini

tapi kalo SSR_GetUserInfo ketika di eksekusi, program malah jadi gak bisa di apa apain, semua button juga jadi disable

Nah tipe data nya kan boolean, tinggal diganti deh nilainya jadi true, beres deh

Dim WithEvents zkem As zkemkeeper.CZKEM

oh, dibuat dalam scope form, ya? Kalau ane, deklarasinya di fungsi. dan setiap kali ingin mengambil data, koneksi ke mesin dibuka dan bila telah selesai langsung ditutup.

ini contoh kodingnya:


--------------------
Public Function GetUserFromMachine(ByVal machineIp As String, ByVal port As Integer) As List(Of AttendanceUserInfoMachineInfo)
Dim rvalue As New List(Of AttendanceUserInfoMachineInfo)
Dim MachineReader As New zkemkeeper.CZKEM
Dim blconnect As Boolean
Try
blconnect = MachineReader.Connect_Net(machineIp, port)
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
End Try
Dim dwMachineNumber As Integer = 1
Dim officeId As Integer = 0
If blconnect Then
MachineReader.EnableDevice(dwMachineNumber, False)

Dim indexfinger As Integer = 0
Dim test = 0
While True
Dim Uinfo As New AttendanceUserInfoMachineInfo
Dim blUserExist = MachineReader.SSR_GetAllUserInfo(dwMachineNumber,
Uinfo.dwEnrollNumber, 
Uinfo.Name, 
Uinfo.Password, 
Uinfo.Privilage, 
Uinfo.Enabled)
If blUserExist = False Then
Exit While
End If
Uinfo.OfficeID = 0
Uinfo.MachineIP = machineIp
rvalue.Add(Uinfo)
'Debug.Print(Uinfo.dwEnrollNumber)
End While
MachineReader.EnableDevice(dwMachineNumber, True)
MachineReader.Disconnect()
Return rvalue
End If
Return Nothing
End Function
------------------

ini class untuk mengumpulkan data:
Public Class AttendanceUserInfoMachineInfo
Property dwEnrollNumber As String

Property Name As String
Property Password As String
Property Privilage As Integer
Property Enabled As Boolean
Property dwMachineNumber As Integer
Property OfficeID As Integer
Property MachineIP As String
End Class

tapi pada dasar nya sama aja ya? cuman yang coding diatas bisa putus sendiri koneksi nya ya secara otomatis? atau gimana?

Oiya mas satulagi mas, saya masih bingung dengan field ini..

apa hasil nya udah bener atau masih salah?
itu kodingnya seperti apa? 
coba aja lakukan buka/tutup koneksi seperti yang saya lakukan. lihat juga bahwa skope object zkemkeeper.CZKEM cuma pada fungsi itu saja. artinya setiap kali dipanggil, objectnya selalu baru . ini tentu mempengaruhi pembacaan di memori.

yang itu coding nya kaya gini :

If zkem.ReadGeneralLogData(1) Then

While zkem.SSR_GetGeneralLogData(1, dwEnrollNumber, Verify, InOut, iYear, iMonth, iDay, iHour, iMinute, iSecond, WorkCode)
i += 1

strDateTime = iYear & "-" & iMonth & "-" & iDay & " " & iHour & ":" & iMinute

lvItem = ListView2.Items.Add(i.ToString())
lvItem.SubItems.Add(dwEnrollNumber)
lvItem.SubItems.Add(UserID)
lvItem.SubItems.Add(Verify)
lvItem.SubItems.Add(InOut)
lvItem.SubItems.Add(strDateTime)

Application.DoEvents()
End While
End If

barangkali itu data yang usernya sudah dihapus. coba reset aja mesinnya. kayaknya kodingnya udah benar.

emang harus nya isi field User ID, Verify, dan InOut Mode harusnya gimana gan?

oh, setelah saya lihat sekali lagi. ternyata anda banyak khilafnya . grin emotikon

haha khilafnya dimana aja om? jadi gelisah nih grin emotikon

coba cari parameter UserId di baris ini:
While zkem.SSR_GetGeneralLogData(1, dwEnrollNumber, Verify, InOut, iYear, iMonth, iDay, iHour, iMinute, iSecond, WorkCode)
nggak ada, kan?
kenapa tiba-tiba ada userId di baris berikut:

lvItem = ListView2.Items.Add(i.ToString())

lvItem.SubItems.Add(dwEnrollNumber)
lvItem.SubItems.Add(UserID) <<< this one
lvItem.SubItems.Add(Verify)
lvItem.SubItems.Add(InOut)
lvItem.SubItems.Add(strDateTime)