Kamis, 16 September 2010

Kode Program Cara Membuat Barcode Generator menggunakan VB6

Option Explicit
Dim BCtype As Long


Private Sub makeBC()
Select Case BCtype
Case 0
make39
Case 1
makei25
Case 2
make128
Case 3
makeCodabar
End Select
End Sub



Private Sub make39()
Dim x As Long, y As Long, pos As Long
Dim Bardata As String
Dim Cur As String
Dim CurVal As Long
Dim chksum As Long
Dim chkchr As String
Dim temp As String
Dim BC(43) As String
'3 of the 9 elements are wide: 0=narrow, 1=wide
BC(0) = "000110100" '0
BC(1) = "100100001" '1
BC(2) = "001100001" '2
BC(3) = "101100000" '3
BC(4) = "000110001" '4
BC(5) = "100110000" '5
BC(6) = "001110000" '6
BC(7) = "000100101" '7
BC(8) = "100100100" '8
BC(9) = "001100100" '9
BC(10) = "100001001" 'A
BC(11) = "001001001" 'B
BC(12) = "101001000" 'C
BC(13) = "000011001" 'D
BC(14) = "100011000" 'E
BC(15) = "001011000" 'F
BC(16) = "000001101" 'G
BC(17) = "100001100" 'H
BC(18) = "001001100" 'I
BC(19) = "000011100" 'J
BC(20) = "100000011" 'K
BC(21) = "001000011" 'L
BC(22) = "101000010" 'M
BC(23) = "000010011" 'N
BC(24) = "100010010" 'O
BC(25) = "001010010" 'P
BC(26) = "000000111" 'Q
BC(27) = "100000110" 'R
BC(28) = "001000110" 'S
BC(29) = "000010110" 'T
BC(30) = "110000001" 'U
BC(31) = "011000001" 'V
BC(32) = "111000000" 'W
BC(33) = "010010001" 'X
BC(34) = "110010000" 'Y
BC(35) = "011010000" 'Z
BC(36) = "010000101" '-
BC(37) = "110000100" '.
BC(38) = "011000100" '
BC(39) = "010101000" '$
BC(40) = "010100010" '/
BC(41) = "010001010" '+
BC(42) = "000101010" '%
BC(43) = "010010100" '* (used for start/stop character only)

Picture1.Cls
If Text1.Text = "" Then Exit Sub
pos = 20
Bardata = UCase(Text1.Text)

'Check for invalid characters, build temp string & calculate check sum
For x = 1 To Len(Bardata)
Cur = Mid$(Bardata, x, 1)
Select Case Cur
Case "0" To "9"
CurVal = Val(Cur)
Case "A" To "Z"
CurVal = Asc(Cur) - 55
Case "-"
CurVal = 36
Case "."
CurVal = 37
Case " "
CurVal = 38
Case "$"
CurVal = 39
Case "/"
CurVal = 40
Case "+"
CurVal = 41
Case "%"
CurVal = 42
Case Else 'oops!
Picture1.Print Cur & " is Invalid"
Exit Sub
End Select
temp = temp & BC(CurVal) & "0" '"0"= add intercharactor gap (1 narrow space)
chksum = chksum + CurVal
Next

'Add Check Character? (rarely used, but i put it here anyway...)
If Check1(2).Value Then
chksum = chksum Mod 43
temp = temp & BC(chksum) & "0"
chkchr = Mid$("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*", chksum + 1, 1)
End If

'Add Start & Stop characters (must have 'em for valid barcodes)
temp = BC(43) & "0" & temp & BC(43)

'Generate Barcode
For x = 1 To Len(temp)
If x Mod 2 = 0 Then
'SPACE
pos = pos + 1 + (2 * Val(Mid$(temp, x, 1))) + Check1(0).Value
Else
'BAR
For y = 1 To 1 + (2 * Val(Mid$(temp, x, 1)))
Picture1.Line (pos, 1)-(pos, 58 - Check1(1) * 8)
pos = pos + 1
Next
End If
Next

'Add Label?
If Check1(1).Value Then
Picture1.CurrentX = 35 + Len(Bardata) * (5 + Check1(0).Value * 2) 'kinda center
Picture1.CurrentY = 50
Picture1.Print Bardata & chkchr;
End If
End Sub


Private Sub makei25()
Dim x As Long, y As Long, pos As Long
Dim Bardata As String
Dim Cur As String
Dim temp As String
Dim chksum As Long
Dim BC(11) As String
'2 of the 5 elements are wide: 0=narrow, 1=wide
BC(0) = "00110" '0
BC(1) = "10001" '1
BC(2) = "01001" '2
BC(3) = "11000" '3
BC(4) = "00101" '4
BC(5) = "10100" '5
BC(6) = "01100" '6
BC(7) = "00011" '7
BC(8) = "10010" '8
BC(9) = "01010" '9
BC(10) = "0000" 'Start chr
BC(11) = "100" 'Stop chr

Picture1.Cls
If Text1.Text = "" Then Exit Sub
pos = 20
Bardata = Text1.Text

'make even num of digits by adding a leading 0
If Len(Bardata) Mod 2 And Not Check1(2).Value Then Bardata = "0" & Bardata
If Not (Len(Bardata) Mod 2) And Check1(2).Value Then Bardata = "0" & Bardata

'Check for invalid characters and calculate check sum
For x = 1 To Len(Bardata)
Cur = Mid$(Bardata, x, 1)
If Cur < "0" Or Cur > "9" Then
Picture1.Print Cur & " is Invalid"
Exit Sub
End If
'make checksum
If x Mod 2 Then
chksum = chksum + CLng(Cur) * 3
Else
chksum = chksum + CLng(Cur)
End If
Next

'add check chr to bardata (if selected)
If Check1(2).Value Then
chksum = (10 - chksum Mod 10) Mod 10
Bardata = Bardata & Chr$(48 + chksum)
End If

'interleave the code into a temp string - what'd you think the name meant?
For x = 1 To Len(Bardata) Step 2
For y = 1 To 5
temp = temp & Mid$(BC(Val(Mid$(Bardata, x, 1))), y, 1)
temp = temp & Mid$(BC(Val(Mid$(Bardata, x + 1, 1))), y, 1)
Next
Next

'add Start & Stop characters
temp = BC(10) & temp & BC(11)

'Generate Barcode
For x = 1 To Len(temp)
If x Mod 2 = 0 Then
'SPACE
pos = pos + 1 + (2 * Val(Mid$(temp, x, 1))) + Check1(0).Value
Else
'BAR
For y = 1 To 1 + (2 * Val(Mid$(temp, x, 1)))
Picture1.Line (pos, 1)-(pos, 58 - Check1(1) * 8)
pos = pos + 1
Next
End If
Next

'Add Label?
If Check1(1).Value Then
Picture1.CurrentX = 20 + Len(Bardata) * (2 + Check1(0).Value * 1.3) 'kinda center
Picture1.CurrentY = 50
Picture1.Print Bardata;
End If
End Sub


Private Sub make128()
Dim x As Long, y As Long, pos As Long
Dim Bardata As String
Dim Cur As String
Dim CurVal As Long
Dim chksum As Long
Dim temp As String
Dim BC(106) As String
'code 128 is basically the ASCII chr set.
'4 element sizes : 1=narrowest, 4=widest
BC(0) = "212222" '
BC(1) = "222122" '!
BC(2) = "222221" '"
BC(3) = "121223" '#
BC(4) = "121322" '$
BC(5) = "131222" '%
BC(6) = "122213" '&
BC(7) = "122312" ''
BC(8) = "132212" '(
BC(9) = "221213" ')
BC(10) = "221312" '*
BC(11) = "231212" '+
BC(12) = "112232" ',
BC(13) = "122132" '-
BC(14) = "122231" '.
BC(15) = "113222" '/
BC(16) = "123122" '0
BC(17) = "123221" '1
BC(18) = "223211" '2
BC(19) = "221132" '3
BC(20) = "221231" '4
BC(21) = "213212" '5
BC(22) = "223112" '6
BC(23) = "312131" '7
BC(24) = "311222" '8
BC(25) = "321122" '9
BC(26) = "321221" ':
BC(27) = "312212" ';
BC(28) = "322112" '<>
BC(31) = "212321" '?
BC(32) = "232121" '@
BC(33) = "111323" 'A
BC(34) = "131123" 'B
BC(35) = "131321" 'C
BC(36) = "112313" 'D
BC(37) = "132113" 'E
BC(38) = "132311" 'F
BC(39) = "211313" 'G
BC(40) = "231113" 'H
BC(41) = "231311" 'I
BC(42) = "112133" 'J
BC(43) = "112331" 'K
BC(44) = "132131" 'L
BC(45) = "113123" 'M
BC(46) = "113321" 'N
BC(47) = "133121" 'O
BC(48) = "313121" 'P
BC(49) = "211331" 'Q
BC(50) = "231131" 'R
BC(51) = "213113" 'S
BC(52) = "213311" 'T
BC(53) = "213131" 'U
BC(54) = "311123" 'V
BC(55) = "311321" 'W
BC(56) = "331121" 'X
BC(57) = "312113" 'Y
BC(58) = "312311" 'Z
BC(59) = "332111" '[
BC(60) = "314111" '\
BC(61) = "221411" ']
BC(62) = "431111" '^
BC(63) = "111224" '_
BC(64) = "111422" '`
BC(65) = "121124" 'a
BC(66) = "121421" 'b
BC(67) = "141122" 'c
BC(68) = "141221" 'd
BC(69) = "112214" 'e
BC(70) = "112412" 'f
BC(71) = "122114" 'g
BC(72) = "122411" 'h
BC(73) = "142112" 'i
BC(74) = "142211" 'j
BC(75) = "241211" 'k
BC(76) = "221114" 'l
BC(77) = "413111" 'm
BC(78) = "241112" 'n
BC(79) = "134111" 'o
BC(80) = "111242" 'p
BC(81) = "121142" 'q
BC(82) = "121241" 'r
BC(83) = "114212" 's
BC(84) = "124112" 't
BC(85) = "124211" 'u
BC(86) = "411212" 'v
BC(87) = "421112" 'w
BC(88) = "421211" 'x
BC(89) = "212141" 'y
BC(90) = "214121" 'z
BC(91) = "412121" '{
BC(92) = "111143" '|
BC(93) = "111341" '}
BC(94) = "131141" '~
BC(95) = "114113" ' *not used in this sub
BC(96) = "114311" 'FNC 3 *not used in this sub
BC(97) = "411113" 'FNC 2 *not used in this sub
BC(98) = "411311" 'SHIFT *not used in this sub
BC(99) = "113141" 'CODE C *not used in this sub
BC(100) = "114131" 'FNC 4 *not used in this sub
BC(101) = "311141" 'CODE A *not used in this sub
BC(102) = "411131" 'FNC 1 *not used in this sub
BC(103) = "211412" 'START A *not used in this sub
BC(104) = "211214" 'START B
BC(105) = "211232" 'START C *not used in this sub
BC(106) = "2331112" 'STOP

Picture1.Cls
If Text1.Text = "" Then Exit Sub
pos = 20
Bardata = Text1.Text

'Check for invalid characters, calculate check sum & build temp string
For x = 1 To Len(Bardata)
Cur = Mid$(Bardata, x, 1)
If Cur < " " Or Cur > "~" Then
Picture1.Print "Invalid Character(s)"
Exit Sub
End If
CurVal = Asc(Cur) - 32
temp = temp + BC(CurVal)
chksum = chksum + CurVal * x
Next

'Add start, stop & check characters
chksum = (chksum + 104) Mod 103
temp = BC(104) & temp & BC(chksum) & BC(106)

'Generate Barcode
For x = 1 To Len(temp)
If x Mod 2 = 0 Then
'SPACE
pos = pos + (Val(Mid$(temp, x, 1))) + Check1(0).Value
Else
'BAR
For y = 1 To (Val(Mid$(temp, x, 1)))
Picture1.Line (pos, 1)-(pos, 58 - Check1(1) * 8)
pos = pos + 1
Next
End If
Next

'Add Label?
If Check1(1).Value Then
Picture1.CurrentX = 30 + Len(Bardata) * (3 + Check1(0).Value * 2) 'kinda center
Picture1.CurrentY = 50
Picture1.Print Bardata;
End If
End Sub


Private Sub makeCodabar()
Dim x As Long, y As Long, pos As Long
Dim Bardata As String
Dim Cur As String
Dim CurVal As Long
Dim temp As String
Dim BC(19) As String
'Codabar, also known as NW-7
BC(0) = "0000011" '0
BC(1) = "0000110" '1
BC(2) = "0001001" '2
BC(3) = "1100000" '3
BC(4) = "0010010" '4
BC(5) = "1000010" '5
BC(6) = "0100001" '6
BC(7) = "0100100" '7
BC(8) = "0110000" '8
BC(9) = "1001000" '9
BC(10) = "0001100" '-
BC(11) = "0011000" '$
BC(12) = "1000101" ':
BC(13) = "1010001" '/
BC(14) = "1010100" '.
BC(15) = "0010101" '+
BC(16) = "0011010" 'start/stop A
BC(17) = "0101001" 'start/stop B
BC(18) = "0001011" 'start/stop C
BC(19) = "0001110" 'start/stop D

Picture1.Cls
If Text1.Text = "" Then Exit Sub
pos = 20
Bardata = Text1.Text

For x = 1 To Len(Bardata)
Cur = Mid$(Bardata, x, 1)
Select Case Cur
Case "0" To "9"
CurVal = Val(Cur)
Case "a" To "d"
CurVal = Asc(Cur) - 81
Case "-"
CurVal = 10
Case "$"
CurVal = 11
Case ":"
CurVal = 12
Case "/"
CurVal = 13
Case "."
CurVal = 14
Case "+"
CurVal = 15
Case Else 'oops!
Picture1.Print Cur & " is Invalid"
Exit Sub
End Select
temp = temp & BC(CurVal) & "0" '"0"= add intercharactor gap (1 narrow space)
Next

'Add Start & Stop characters (using "A" for both here)
temp = BC(16) & "0" & temp & BC(16)

'Generate Barcode
For x = 1 To Len(temp)
If x Mod 2 = 0 Then
'SPACE
pos = pos + 1 + (2 * Val(Mid$(temp, x, 1))) + Check1(0).Value
Else
'BAR
For y = 1 To 1 + (2 * Val(Mid$(temp, x, 1)))
Picture1.Line (pos, 1)-(pos, 58 - Check1(1) * 8)
pos = pos + 1
Next
End If
Next

'Add Label?
If Check1(1).Value Then
Picture1.CurrentX = 30 + Len(Bardata) * (3 + Check1(0).Value * 2) 'kinda center
Picture1.CurrentY = 50
Picture1.Print Bardata;
End If
End Sub


Private Sub Form_Resize()
Picture1.Width = Form1.Width - 360
makeBC
End Sub


Private Sub Option1_Click(Index As Integer)
Select Case Index
Case 0
Check1(2).ToolTipText = "Optional"
Check1(2).Value = 0
Check1(2).Enabled = True
Case 1
Check1(2).ToolTipText = "Optional"
Check1(2).Value = 0
Check1(2).Enabled = True
Case 2
Check1(2).ToolTipText = "Not optional"
Check1(2).Value = 1
Check1(2).Enabled = False
Case 3
Check1(2).ToolTipText = "Not used"
Check1(2).Value = 0
Check1(2).Enabled = False
End Select
BCtype = Index
makeBC
End Sub


Private Sub Text1_Change()
makeBC
End Sub


Private Sub Check1_Click(Index As Integer)
makeBC
End Sub


Private Sub Command1_Click()
Clipboard.Clear
Clipboard.SetData Picture1.Image
End Sub

Sabtu, 11 September 2010

Aplikasi Handphone

Aplikasi Handphone

Penulis
Kompilasi beberapa unit yang digunakan untuk mengirim dan membaca SMS, dan menampilkan informasi handphone


Untuk mengakomodasi masukan dari para rekan, aku menyusun aplikasi dari artikel Mengirim SMS dari PC dan artikel Membaca SMS dari PC, serta sedikit cara untuk mendapatkan informasi mengenai status HP.

Aplikasi ini dibuat dalam versi Delphi, dan dengan teknik yang sama, sangat mungkin untuk diporting ke Visual Basic ;)
untuk rekan yang belum terbiasa dengan Delphi, mungkin kapan-kapan akan aku buat versi VB-nya. Kapan ya...

Ketika aplikasi ini pertama kali dijalankan, dalam keadaan tidak terhubung ke handphone. Kita diberi kesempatan untuk memilih nomor port yang terhubung dengan handphone. Setelah memilih nomor port yang benar, kemudian tekan tombol Konek, maka aplikasi akan berusaha menghubungi HP.

Jika aplikasi sukses terhubung ke HP, maka akan ditampilkan beberapa informasi mengenai HP tersebut.
Berikut ini adalah informasi tersebut:
  • Merk HP, didapatkan dengan mengeksekusi perintah AT+CGMI
  • Informasi modem, dengan command AT+GMM
  • AT+CGSN untuk mendapatkan nomor IMEI
  • AT+COPS? untuk menampilkan operator jaringan
  • AT+CSCA? untuk mendapatkan nomor SMSC (layanan SMS)
Setelah itu, selama program berjalan, indikator dari handphone secara kontinu ditampilkan. Indikator tersebut diambil dengan perintah AT+CIND?
Nilai yang dikembalikan adalah suatu list (rangkaian) yang menandakan indikator HP. Urutan dan nilai indikator dapat berbeda untuk beberapa merk HP. Aku sudah nyoba untuk Sony Ericsson T610 dan Siemens CX65. Hasil yang persis sama adalah pada indikator Battery dan Sinyal, sedangkan indikator yang lain berbeda posisi.

Karena itu, jika ingin aplikasi kamu berjalan full untuk semua merk HP, maka aplikasi harus mendeteksi semua nilai yang didukung oleh HP yang digunakan. Informasi mengenai hal ini dapat dilihat pada command AT+CIND=?
Berikut ini adalah contoh hasil perintah AT+CIND=? pada Siemens CX65:
at+cind=?
+CIND: ("battchg",(0-5)),("signal",(0-5)),("service",(0,1)),
("message",(0,1)),("call",(0,1)),("roam",(0,1)),
("smsfull",(0,1)),("call status",(10x-20x)),
("GPRS coverage",(0,1)),("callsetup",(0-3))

OK
Sesuai urutannya, maka item pertama adalah level battery, kedua adalah sinyal, ketiga adalah kesiapan servis, lalu datangnya SMS baru, terjadinya panggilan (berbicara), kondisi roaming, sms box penuh, dan seterusnya. Silakan mereferensi ke manual masing-masing HP untuk lebih jelasnya.

Untuk mendapatkan nilainya, jalankan perintah AT+CIND? (tanpa sama dengan). Berikut ini adalah contohnya:
at+cind?
+CIND: 2,2,1,0,0,1,0,0,1,0
Yang didapatkan adalah rangkain nilainya. Nilai yang pertama adalah untuk battery, yaitu 2 dari skala 0 - 5 (lihat hasil AT+CIND=? di atas). Sinyal pada HP juga 2, begitu seterusnya.

Informasi tersebut ditampilkan secara terus menerus, dengan interval timer 1000 milisecond (1 detik). Berikut ini adalah contoh tampilan aplikasi:
Level sinyal dan battery ditampilkan dalam bentuk gauge meter, sedangkan indikator call, sms, smsfull ditampilkan dengan gambar pada kotak hijau sebelahnya. Ya, aku akui, gambar indikatornya tidak informatif sama sekali. Karena itulah, program ini aku tempatkan di sini, dipersilakan untuk dimodifikasi :D
Fasilitas aplikasi yang lain adalah SMS Info, untuk membaca SMS dari Inbox (termasuk SMS baru), sedangkan untuk SMS dalam folder draft dan sent, aplikasi belum mendukung :( silakan ditambahi, ok.

Page berikutnya adalah fasilitas untuk mengirim SMS. Di sini juga disediakan tombol untuk menyimpan SMS ke dalam folder draft pada HP.

Kedua fasilitas di atas menggunakan kedua unit yang telah dibahas pada artikel sebelumnya, namun dengan berbagai perbaikan dari masukan rekan-rekan semua, terutama Sri. Makasih banget, ok.
Kemudian, yang belum pernah dibahas sebelumnya adalah pembacaan buku kontak.

Untuk memilih memori penyimpanan kontak, apakah menggunakan SIM Card (kode SM), atau memori handphone (ME), atau keduanya (MT), digunakan perintah AT+CPBS=(SM, ME, MT). Tidak semua HP mendukung ketiganya, maka dari itu aplikasi mesti bijaksana memilih :)
untuk mengetahui media yang didukung, pake perintah AT+CPBS=?
Untuk CX65 defaultnya adalah SM, dan gak bisa ME. Untuk amannya, gunakan saja SM.

Setelah menentukan memori yang dipilih, berikutnya adalah mencari informasi index (nomor posisi) kontak yang tersedia. Gunakan perintah AT+CPBR=?, maka akan diberikan index yang tersedia. Contoh pada CX65:
at+cpbr=?
+CPBR: (1-250),20,12

OK
Hasil itu menandakan bahwa index yang tersedia adalah 1 - 250. Maka kita perlu membaca (looping) dari 1 sampai 250 untuk mendapatkan keseluruhan kontak. Gunakan perintah AT+CPBR=nomor indexnya untuk membaca tiap-tiap index. Contoh:
at+cpbr=88
+CPBR: 88,"+6281524737470",145,"Rasdi"

OK
Hasil yang diberikan tinggal diparsing dan ditampilkan pada listview.
Untuk mendownload aplikasi dan sourcenya, silakan menuju ke bagian update aplikasi.

Jika ingin menjalankan dari source-nya, atau melakukan modifikasi program, lebih mudah kalo menggunakan Delphi 6, karena aku membuatnya dari versi itu.

Untuk versi ini, dibutuhkan library XComDrv untuk mengcompile ulang. Silakan download library tersebut di sini. Extract pada suatu direktori (misalnya c:\ouxcom), lalu open file *.dpk melalui IDE Delphi, dan klik install.

Kemudin tambahkan path di mana ouxcom tersebut tadi di-extract, kedalam path library, agar library tersebut dapat bekerja. Masuk menu Tools > Environment Options > Library > Library path, browse ke c:\ouxcom, lalu tekan add.
Jika diperhatikan, masih banyak fasilitas yang mungkin ditambahkan. Aplikasi tersebut hanya contoh penerapan perintah AT Command untuk baca dan kirim SMS.

Ok, selamat mencoba.

Update Aplikasi

Versi terbaru:
Source: AplikasiSMS_1_7_Src.zip
Aplikasi: AplikasiSMS_1_7_Exe.zip

Source lama: AplikasiHP_1_2.zip

Function terbilang pada VB

Fungsi Terbilang Pake Vb

Mengubah angka menjadi huruf ..fungsi terbilang sangat bermanfaat buat kamu yang bikin program yang banyak berhubungan dengan uang.


Buat Module baru dengan nama Mod_terbilang :
isi script didalamnya :
Function NumToText(dblValue As Double) As String
    Static ones(0 To 9) As String
    Static teens(0 To 9) As String
    Static tens(0 To 9) As String
    Static thousands(0 To 4) As String
    Dim i As Integer, nPosition As Integer
    Dim nDigit As Integer, bAllZeros As Integer
    Dim strResult As String, strTemp As String
    Dim tmpBuff As String
    
    ones(0) = ""
    ones(1) = "one"
    ones(2) = "two"
    ones(3) = "three"
    ones(4) = "four"
    ones(5) = "five"
    ones(6) = "six"
    ones(7) = "seven"
    ones(8) = "eight"
    ones(9) = "nine"

    teens(0) = ""
    teens(1) = "eleven"
    teens(2) = "twenteen"
    teens(3) = "thirteen"
    teens(4) = "fourteen"
    teens(5) = "fiveteen"
    teens(6) = "sixteen"
    teens(7) = "seventeen"
    teens(8) = "eighteen"
    teens(9) = "nineteen"

    tens(0) = ""
    tens(1) = "ten"
    tens(2) = "twenty"
    tens(3) = "thirty"
    tens(4) = "fourty"
    tens(5) = "fivety"
    tens(6) = "sixty"
    tens(7) = "seventy"
    tens(8) = "eighty"
    tens(9) = "ninety"

    thousands(0) = ""
    thousands(1) = "thousand"
    thousands(2) = "million"
    thousands(3) = "billion"
    thousands(4) = "triliun"

    'Errors Handler
    On Error GoTo NumToTextError
    'Bagian akhir
    strResult = "rupiah "
    'Konversi ke string
    Dim des, j, t1, t2
    Dim ada As Boolean
    For j = 1 To Len(totalbiaya)
       des = Mid(totalbiaya, j, 1)
       If des = "." Or des = "," Then
          ada = True
          t1 = Mid(totalbiaya, 1, j - 1)
          t2 = Mid(totalbiaya, j   1)
          j = Len(totalbiaya)
       End If
    Next j
    If ada = True Then
      strTemp = CStr(Int(t1))
      ada = False
    Else
      strTemp = CStr(Int(dblValue))
    End If
'    strTemp = CStr(Int(dblValue))
    'Diulang sebanyak panjang teks
    For i = Len(strTemp) To 1 Step -1
        'Ambil nilai angka posisi ke-i
        nDigit = Val(Mid$(strTemp, i, 1))
        'Ambil posisi angka
        nPosition = (Len(strTemp) - i)   1
        'Pilihan proses tergantung posisi satuan, puluhan, atau ratusan
        Select Case (nPosition Mod 3)
            Case 1  'Posisi satuan
                bAllZeros = False
                If i = 1 Then
                    tmpBuff = ones(nDigit)

Penomoran menggunakan barcode pada Delphi

Barcode Reader

Penulis
Menggunakan perangkat barcoder reader pada aplikasi kita sangatlah mudah



Artikel ini mungkin gak berguna bagi programmer delphi yang sudah mahir, akan tetapi mungkin sangat dibutuhkan oleh programmer yang baru saja belajar dan ingin mengembangkan aplikasi dengan menggunakan perangkat barcode reader. Nah sebelumnya mungkin apa ya barcode reader itu :
Barcode Reader adalah alat yang digunakan untuk membaca kode barcode. Tanpa kita sadari bahwa setiap hari kita apat menemui barcode pada barang-barang yang kita gunakan sehari-hari. Seperti pada pasta gigi, sabun, pada makanan-makanan ringan, dll.
Barcode dibedakan menjadi 2 jenis barcode :
1. barcode 1 dimensi
barcode 1 dimensi terdiri dari garis-garis yang berwarna putih dan hitam. warna putih untuk nilai 0 dan warna hitam untuk nilai 1.
2. barcode 2 dimensi
sedangkan barcode 2 dimensi sudah tidak berupa garis-garis lagi, akan tetapi seperti gambar. jadi informasi yang tersimpan didalamnya akan lebih besar.
untuk membuat kode barcode dari delphi kita dapat memanfaatkan rave report yang udah include pada delphi versi 7. kita dapat memilih type dari barcode yang akan kita buat. diantaranya barcode untuk produk ritail, buku perpustakaan, anggota berbeda-beda. Kode yang akan kita buat bisa bebas asalkan hanya digunakan pada sistem disuatu tempat seperti perpustakaan, akan tetapi untuk produk yang akan di edarkan dipasaran harus didaftarkan terlebih dahulu ke GS1 agar tidak sama dengan produk yang lain.
Untuk menggunkan perangkat barcode pada aplikasi kita sangat mudah. Sistem kerja sebuah barcode reader hampir sama dengan inputan pada kayboard. jadi tidak diperlukan lagi driver atau komponent untuk menggunakan barcode reader pada delphi. kita tinggal hubungkan barcode ke PS2 kemudian komputer sudah menganggap barcode reader tersebut adalah kayboard. Perbedaan barcode reader dengan keyboard adalah barcode reader membaca sebuah kode barcode kemudian memasukan kode tersebut kedalam komputer dengan menambahkan karakter enter atau chr(13). Nah untuk itu kita tinggal memberikan event onkeypress pada Tedit yang akan kita gunakan sebagai input kode barcode. pada event tersebut kita berikan prosedure sebagai berikut :

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
//pada input barcode reader pasti diakhir karakter mendapat tambahan karakter enter atau chr(13) misal 1234567 menjadi 1234567 chr(13)
if key = chr(13) then //apabila ditekan enter
//proses setelah penekanan enter
end;