Forum Sains Indonesia

Ilmu Terapan => Ilmu Komputer => Topik dimulai oleh: douhawuboy pada Juli 15, 2010, 11:23:36 AM

Judul: penggunaan barcode reader
Ditulis oleh: douhawuboy pada Juli 15, 2010, 11:23:36 AM
aq lg ngerjain skripsi neh.. tentang penjualan minimarket dan menggunakan barcode reader..

cuma aq bingung gimana ngoneksiin bahasa pemrogramannya (C++) dgn barcode readernya..?

lalu gimana cara masukin code barcode ke textfield/textboxnya..?

ada yg tau ga source codenya..?

please help me donnkk wahai para master pemrograman C++...?

uda mentok nehhhh...

please help me..

thank's...

GBU...!!!!
Judul: Re: penggunaan barcode reader
Ditulis oleh: utusan langit pada Juli 15, 2010, 11:48:53 AM
wah jadi pengen nyimak ni,..
ayo dong yang tahu infonya share disini,..
Judul: Re: penggunaan barcode reader
Ditulis oleh: Bernando pada Juli 15, 2010, 02:07:54 PM
saya pikir gak perlu di koneksiin barcode readernya dengan program...
toh barcode reader udah mengeluarkan out dari pembacaan barcodenya...
contoh anda buka notepad..trus coba read sebuah barcode pake barcode readernya..nanti hasilnya udah tertulis di notepad kok..
yang penting justru membuat program untuk ngeprint barcodenya..

kecuali program anda masih pake consol alias tidak visual, aq belum pernah mencoba...sy sih dulu pake C# visual studio..
kalo mau tanya lebih jauh silahkan aja...kebetulan aku ada pengalaman di barcode ini..hehehehe..:D
Judul: Re: penggunaan barcode reader
Ditulis oleh: utusan langit pada Juli 15, 2010, 06:40:57 PM
owh, berarti hasil dari barcode reader itu seperti penulisan dalam keyboard ya?
maksud saya adalah program apa yang dibuka disana, dia akan menulis hasil dari barcodenya?

untuk programnya, saya mau nanya nih, caranya memasukkan hasil barcode kedalam inputan program bagaimana?
apakah perlu koneksi khusus dari barcode reader ke program? :D :D
Judul: Re: penggunaan barcode reader
Ditulis oleh: heru.htl pada Juli 15, 2010, 07:21:35 PM
[pranala luar disembunyikan, sila masuk atau daftar.]
Judul: Re: penggunaan barcode reader
Ditulis oleh: heru.htl pada Juli 15, 2010, 07:31:01 PM
Coba code ini & compile:


    // terminal.c - simple terminal program for Dev-C++ and Cygwin
    //
    // only works for one port at moment
    //
    #include <conio.h>
    #include <stdio.h>
    // Uncomment the following directive for use with Cygwin:
    // #include <windows.h>
     
     
    HANDLE hCom;           //handle for serial port I/O
     
    /*----------------------------------------------------------------------------*
     * Serial port: initialise io_port, set baud rate, set data bits, one stop bit*/
     
    HANDLE rs_initialise (int io_port, const long int BaudRate, const char parity, const char data)
    {
        BOOL bPortReady;
        DCB dcb;
        char ComPortName[]="COM1";           // set up COM port number in COM?
        ComPortName[3]='0'+io_port;
        hCom = CreateFile(ComPortName, GENERIC_READ | GENERIC_WRITE,
                                      0,            // exclusive access
                                      NULL,         // no security
                                      OPEN_EXISTING,
                                      0,            // no overlapped I/O
                                      NULL);        // null template
     
     
        if ((int)hCom <= 0) { printf("serial port COM%d connect fail %s error %d\n\r", io_port, ComPortName, GetLastError()); return 0;   }
        //else                printf(" serial port COM%d connect OK \n\r", io_port);
     
        bPortReady = SetupComm(hCom, 2, 128); // set buffer sizes
        if (!bPortReady ) { printf("serial port COM%d SetupComm fail  %d\n\r", io_port,  GetLastError()); return 0;   }
        //else                printf(" serial port COM%d connect OK \n\r", io_port);
     
        bPortReady = GetCommState(hCom, &dcb);
        if (!bPortReady ) { printf("serial port COM%d  GetCommState fail  %d\n\r", io_port,  GetLastError()); return 0;   }
      //  else                printf(" serial port COM%d connect OK \n\r", io_port);
        dcb.BaudRate = BaudRate;
        if( data == '7') dcb.ByteSize = 7;
        else             dcb.ByteSize = 8;
        if( parity == 'E') dcb.Parity = EVENPARITY;
        if( parity == 'O') dcb.Parity = ODDPARITY;
        else               dcb.Parity = NOPARITY;
        dcb.StopBits = ONESTOPBIT;
        dcb.fAbortOnError = TRUE;
     
        // set XON/XOFF
        dcb.fOutX = FALSE;                       // XON/XOFF off for transmit
        dcb.fInX = FALSE;                        // XON/XOFF off for receive
        // set RTSCTS
        dcb.fOutxCtsFlow = FALSE;               // turn off CTS flow control
        dcb.fRtsControl = FALSE;                // RTS_CONTROL_HANDSHAKE; //
        // set DSRDTR
        dcb.fOutxDsrFlow = FALSE;               // turn off DSR flow control
        //dcb.fDtrControl = DTR_CONTROL_ENABLE; // DTR handshake
        dcb.fDtrControl = DTR_CONTROL_DISABLE;  //
        // dcb.fDtrControl = DTR_CONTROL_HANDSHAKE; //
     
        bPortReady = SetCommState(hCom, &dcb);
        if (!bPortReady ) { printf("serial port COM%d  SetCommState fail  %d\n\r", io_port,  GetLastError()); return 0;   }
     
        // Communication timeouts
        COMMTIMEOUTS CommTimeouts;
        bPortReady = GetCommTimeouts (hCom, &CommTimeouts);
        CommTimeouts.ReadIntervalTimeout = 5 ;
        CommTimeouts.ReadTotalTimeoutConstant = 5 ;
        CommTimeouts.ReadTotalTimeoutMultiplier = 1 ;
        CommTimeouts.WriteTotalTimeoutConstant = 5 ;
        CommTimeouts.WriteTotalTimeoutMultiplier = 1 ;
        bPortReady = SetCommTimeouts (hCom, &CommTimeouts);
        if (!bPortReady ) { printf("serial port COM%d SetCommTimeouts fail  %d\n\r", io_port,  GetLastError()); return 0;   }
        else                printf(" serial port COM%d connect OK \n\r", io_port);
        return hCom;
    }
     
     
    /*----------------------------------------------------------------------------*
     * Serial port: terminate io_port, sets DTR and RTS to low                     */
    void rs_terminate(const int io_port)
    {
      // Close(hCom);
    }
     
     
     
    /*----------------------------------------------------------------------------*
     * Serial port: read character from io_port (ignored in this version)         */
    char rs_getch(const int io_port)
    {
        char rxchar;
        BOOL bReadRC;
        static DWORD iBytesRead;
        bReadRC = ReadFile(hCom, &rxchar, 1, &iBytesRead, NULL);
        if (iBytesRead) return rxchar; else return 0;         // return 0 if no character read
    }
     
    /*----------------------------------------------------------------------------*
     * Serial port: transmit character to io_port                                 */
    void rs_putch(const int io_port, const int txchar)
    {
        BOOL bWriteRC;
        static DWORD iBytesWritten;
        bWriteRC = WriteFile(hCom, &txchar, 1, &iBytesWritten,NULL);
        return;
    }
     
    /*----------------------------------------------------------------------------*
     * Serial port: transmit a string of characters to io_port                    */
    void rs_putstring(const int io_port, const char *string)
    {
        while (*string != '\0')
            rs_putch(io_port, *string++);
    }
     
    //#include <conio.h>
     
    int main()
    {
        int port = 1;
        if(!rs_initialise(port ,57600, '8', 'N')) { getch(); exit(1); }
        char letter;
        while(1)
         {
          if (kbhit())  rs_putch(port, getche());             // if keyboard hit read character and transmit it 
          if((letter=rs_getch(port))>0)
             { putchar(letter); if(letter=='\r')   putchar('\n'); }     // if character received display it
         }
        getch();
        return 0;
    }
Judul: Re: penggunaan barcode reader
Ditulis oleh: heru.htl pada Juli 15, 2010, 07:37:48 PM
^
^
Ganti nama port dari COM1 atau COM* ke /dev/usb* jika diterapkan pada GNU/Linux | varian UNIX.
Judul: Re: penggunaan barcode reader
Ditulis oleh: utusan langit pada Juli 15, 2010, 08:58:36 PM
bang, saya compile di windows pake dev-c++ kok banyak yang eror ya, banyak yang undeclared
Judul: Re: penggunaan barcode reader
Ditulis oleh: utusan langit pada Juli 15, 2010, 09:08:19 PM
eh sudah bang,..
Judul: Re: penggunaan barcode reader
Ditulis oleh: heru.htl pada Juli 15, 2010, 09:16:12 PM
Kutip dari: utusan langit pada Juli 15, 2010, 08:58:36 PM
bang, saya compile di windows pake dev-c++ kok banyak yang eror ya, banyak yang undeclared

Jangan lupa, libc nya di cek, versinya support atau tidak. ;)
Itu pakai Libc versi mayor 6 minor >= 2.4
dan libstdc++6 minor >= 2.4
Kompilernya GCC 4.3 dan G++ 4.3
Judul: Re: penggunaan barcode reader
Ditulis oleh: utusan langit pada Juli 15, 2010, 09:43:09 PM
bang, kalau boleh tahu pemasangan/setting barcode reader dan alat yang digunakan untuk mengambil sidik jari digital (apa ya namanya?) itu sama ya?
Judul: Re: penggunaan barcode reader
Ditulis oleh: heru.htl pada Juli 15, 2010, 09:48:19 PM
Kutip dari: utusan langit pada Juli 15, 2010, 09:43:09 PM
bang, kalau boleh tahu pemasangan/setting barcode reader dan alat yang digunakan untuk mengambil sidik jari digital (apa ya namanya?) itu sama ya?

Hampir sama, hanya saja butuh aplikasi pustaka pencitraan semacam GD2 library (libgd2.so*).
Judul: Re: penggunaan barcode reader
Ditulis oleh: Bernando pada Juli 16, 2010, 10:11:16 AM
Kutip dari: utusan langit pada Juli 15, 2010, 06:40:57 PM
owh, berarti hasil dari barcode reader itu seperti penulisan dalam keyboard ya?
maksud saya adalah program apa yang dibuka disana, dia akan menulis hasil dari barcodenya?

untuk programnya, saya mau nanya nih, caranya memasukkan hasil barcode kedalam inputan program bagaimana?
apakah perlu koneksi khusus dari barcode reader ke program? :D :D
yupss...bisa dibilang itu sebagai pengganti keyboard..

kalo yang saya lakukan gak ada saya buat koneksi khusus dari barcode reader ke program..
saya tinggal cursor klik ke textfield tempat hasil pembacaan barcode itu...

justru yang penting adalah membuat program untuk print barcodenya...
karena code dari setiap product atau apapun yang digunakan mesti kita konversi dulu ke dalam bentuk barcode untuk diprint supaya ketika barcode reader membaca barcode tersebut, yang masuk ke textfield nya adalah code product tersebut...
Judul: Re: penggunaan barcode reader
Ditulis oleh: douhawuboy pada Juli 16, 2010, 11:00:05 AM
Kutip dari: Bernando pada Juli 15, 2010, 02:07:54 PM
saya pikir gak perlu di koneksiin barcode readernya dengan program...
toh barcode reader udah mengeluarkan out dari pembacaan barcodenya...
contoh anda buka notepad..trus coba read sebuah barcode pake barcode readernya..nanti hasilnya udah tertulis di notepad kok..
yang penting justru membuat program untuk ngeprint barcodenya..

kecuali program anda masih pake consol alias tidak visual, aq belum pernah mencoba...sy sih dulu pake C# visual studio..
kalo mau tanya lebih jauh silahkan aja...kebetulan aku ada pengalaman di barcode ini..hehehehe..:D


jd nanti waktu programnya di run, secara otomatis barcode readernya kebaca ya..

begitupun dgn textfieldnya ya.. langsung kebaca ya code barcodenya..?

thank's..

GBU..!
Judul: Re: penggunaan barcode reader
Ditulis oleh: Bernando pada Juli 16, 2010, 01:02:23 PM
^
^
^
analoginya sama aja anda memasukkan code productnya ke textfield dengan keyboard...
kan kalo pake keyboard jadi lama dan ada kemungkinan kesalahan...
beda dengan barcode...tinggal anda arahin cursor kliknya ke textfield...
nanti otomatis ke tulis ke textfield tersebut ketika melakukan pembacaan barcode..

justru yang agak ribet adalah buat program untuk konversi code product ke barcode...
program mesti bisa melakukan itu...

kalo mau saya ada contohnya kok...
tapi dalam C# visual studio..
kebetulan beberapa bulan kemaren aq buat program nya untuk klient saya...;D
Judul: Re: penggunaan barcode reader
Ditulis oleh: utusan langit pada Juli 16, 2010, 02:10:05 PM
Kutipjustru yang agak ribet adalah buat program untuk konversi code product ke barcode...
program mesti bisa melakukan itu...

??? ???
misalnya ini barcode "|||!1||!!!|"
lalu barcode reader membacanya dan menghasilkan angka bukan?
misal angkanya 1231678
nah, mengapa angka ini kemudian dikoversi lagi kedalam barcode?

mohon penjelasannya!

Kutipkalo mau saya ada contohnya kok...
tapi dalam C# visual studio..
wah boleh tu Bang,..
dikirim disini atau email boleh dah
Sorry but you are not allowed to view spoiler contents.
Judul: Re: penggunaan barcode reader
Ditulis oleh: Bernando pada Juli 16, 2010, 02:23:08 PM
Kutip dari: utusan langit pada Juli 16, 2010, 02:10:05 PM
Kutipjustru yang agak ribet adalah buat program untuk konversi code product ke barcode...
program mesti bisa melakukan itu...
??? ???
misalnya ini barcode "|||!1||!!!|"
lalu barcode reader membacanya dan menghasilkan angka bukan?
misal angkanya 1231678
nah, mengapa angka ini kemudian dikoversi lagi kedalam barcode?

mohon penjelasannya!
kan barcode harus di tempel di productnya...
kan barcode yang di tempel di product itu adalah representasi dari code product yang ada di database...
nah sebelum kita tempel ke product itu kan kita mesti buat dulu barcode nya atau print dulu...
nah sebelum kita print kita kan mesti ambil dulu code product ke database setelah itu baru diconversi ke barcode baru setelah itu di tempel ke product tersebut...

semoga mencerahkan...hehehehe..:D
Judul: Re: penggunaan barcode reader
Ditulis oleh: Bernando pada Juli 16, 2010, 02:26:40 PM
Kutip dari: utusan langit pada Juli 16, 2010, 02:10:05 PM
Kutipkalo mau saya ada contohnya kok...
tapi dalam C# visual studio..
wah boleh tu Bang,..
dikirim disini atau email boleh dah
Sorry but you are not allowed to view spoiler contents.

senin ya...
karena saya harus buka data center tempat dokumentasi semua program beserta source code di kantor...
kalo cari di laptop saya udah makin susah..gak tau ntah kemana filenya....hehehe
kalo sekarang gak keburu bung...:D
Judul: Re: penggunaan barcode reader
Ditulis oleh: utusan langit pada Juli 16, 2010, 07:46:37 PM
Kutipkan barcode harus di tempel di productnya...
kan barcode yang di tempel di product itu adalah representasi dari code product yang ada di database...
nah sebelum kita tempel ke product itu kan kita mesti buat dulu barcode nya atau print dulu...
nah sebelum kita print kita kan mesti ambil dulu code product ke database setelah itu baru diconversi ke barcode baru setelah itu di tempel ke product tersebut...

lho kang, biasanya kan di bungkus suatu product itu sudah ada barcodenya biasanya?
apa harus buat barcode lagi ya?
atau barcode yang ada dalam kemasan tidak sesuai?

Kutipsenin ya...
karena saya harus buka data center tempat dokumentasi semua program beserta source code di kantor...
kalo cari di laptop saya udah makin susah..gak tau ntah kemana filenya....hehehe
kalo sekarang gak keburu bung...ketawa

Ok kang,..  ;D ;Dterimaksih ya
Judul: Re: penggunaan barcode reader
Ditulis oleh: douhawuboy pada Juli 17, 2010, 08:14:40 PM
Kutip dari: Bernando pada Juli 16, 2010, 01:02:23 PM
^
^
^
analoginya sama aja anda memasukkan code productnya ke textfield dengan keyboard...
kan kalo pake keyboard jadi lama dan ada kemungkinan kesalahan...
beda dengan barcode...tinggal anda arahin cursor kliknya ke textfield...
nanti otomatis ke tulis ke textfield tersebut ketika melakukan pembacaan barcode..

justru yang agak ribet adalah buat program untuk konversi code product ke barcode...
program mesti bisa melakukan itu...

kalo mau saya ada contohnya kok...
tapi dalam C# visual studio..
kebetulan beberapa bulan kemaren aq buat program nya untuk klient saya...;D

wah boleh tuh..

tp aq blm pernah belajar C# visual studio...

sama ga dgn C++ builder..?
Judul: Re: penggunaan barcode reader
Ditulis oleh: Bernando pada Juli 19, 2010, 10:18:28 AM
Kutip dari: utusan langit pada Juli 16, 2010, 07:46:37 PM
Kutipkan barcode harus di tempel di productnya...
kan barcode yang di tempel di product itu adalah representasi dari code product yang ada di database...
nah sebelum kita tempel ke product itu kan kita mesti buat dulu barcode nya atau print dulu...
nah sebelum kita print kita kan mesti ambil dulu code product ke database setelah itu baru diconversi ke barcode baru setelah itu di tempel ke product tersebut...

lho kang, biasanya kan di bungkus suatu product itu sudah ada barcodenya biasanya?
apa harus buat barcode lagi ya?
atau barcode yang ada dalam kemasan tidak sesuai?
nah waktu buat kemasan dari product nya itu udah di print / dicetak dulu barcodenya di kemasan atau bungkusnya...
nah antara vendor dari product dan distributor udah ada penyesuaian untuk itu...
Judul: Re: penggunaan barcode reader
Ditulis oleh: heru.htl pada Juli 29, 2010, 09:32:41 PM
Informasi lebih jelas disini:

[pranala luar disembunyikan, sila masuk atau daftar.]

kode berikut saya coba dan bekerja cukup baik:

Barcode modul driver Linux Kernel:



/* bcdrv.c
* A device driver module for reading the HBCS-A300
* barcode wand via serial port ttys0, aka COM1.
*/

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>       /* for registration */
#include <linux/ioport.h>

#include <asm/io.h>

#include "barcode.h"

/* prototypes for _fops */

static ssize_t barcode_read (struct file *file, char *buf, size_t count, loff_t *offset);
static int barcode_open (struct inode *inode, struct file *file);
static int barcode_release (struct inode *inode, struct file *file);

/* our file operations structure */
static struct file_operations barcode_fops = {
      NULL,                  /* llseek */
      barcode_read,
      NULL,                  /* write */
      NULL                   /* readdir */
      NULL,                  /* poll */
      NULL,
      NULL,
      barcode_open,
      NULL,                  /* flush */
      barcode_release,
      NULL,                  /* fsync */
      NULL,                  /* fasync */
      NULL                   /* lock */
};

/* data */

int COM1 = COM_BASE;         /* serial base port */

/* settable parameters */

static char *barcode_name = NULL;
static char barcode_debug = 1;

static ssize_t barcode_read (struct file *file, char *buf, size_t count, loff_t *offset)
{
      int video;

      video = inb_p(COM1+6) & 0x80;     /* DCD = video */
      return video;
}

/*-------------------------------------------------*/
static int barcode_open (struct inode *inode, struct file *file)
{
      int major, minor;

      /* increment usage count */
      MOD_INC_USE_COUNT;

      if (file->f_mode & FMODE_READ) {
            MSG("barcode: opened for reading\n");
      }

      major = MAJOR(inode->i_rdev);
      minor = MINOR(inode->i_rdev);
      MSG("major: %d  minor: %d\n",major,minor);

      return 0;
}

static int barcode_release (struct inode *inode, struct file *file)
{
      MOD_DEC_USE_COUNT;

      MSG("barcode device driver closed\n");

      return 0;
}

int init_module(void)
{
      int res;
      int port_not_available;

      if (barcode_name == NULL)
            barcode_name = "barcode";

      /* elbow our way in here...
            "whee, hackedy hack"
      */
      release_region(COM1,8);

      /* check port available */
      port_not_available = check_region(COM1,8);
      if ( port_not_available ) {
            MSG("port %x is already reserved\n",COM1);
            return port_not_available;
      }

      /* reserve the i/o ports */
      request_region(COM1,8,barcode_name);

      /* register the barcode driver with the kernel */
      res = register_chrdev(BARCODE_MAJOR,
            barcode_name,&barcode_fops);
      if (res) {
            MSG("cannot register barcode device with kernel\n");
            return res;
      }

      /* turn on the barcode wand power */
      outb_p(0x03,COM1+4);      /* raise DTR and RTS */

      /* done */
      MSG("barcode device driver loaded\n");
      return 0;
}

void cleanup_module(void)
{
      /* unregister device and proc entry */
      unregister_chrdev(BARCODE_MAJOR, "barcode");

      /* turn off the barcode wand power */
      outb_p(0x00,COM1+4);      /* drop DTR and RTS */

      /* release the i/o ports */
      release_region(COM1,8);

      MSG("barcode driver removed\n");
      return;
}


barcode.h:


/* barcode.h */

#define COM_BASE      0x3f8     /* COM1 aka ttys0 */
/* #define COM_BASE   0x2f8        COM2 aka ttys1 */


#define BARCODE_MAJOR        42


#define DEBUG

#ifdef DEBUG
#define MSG(string, args...) if (barcode_debug)\
        printk(KERN_DEBUG <\#34>barcode: <\#34> string, ##args)
#else
#define MSG(string, args...)
#endif



Aplikasi testing barcode reader Linux, untuk contoh module driver diatas:


/* wandtest.c - rudimentary test of barcode device driver */

#include <stdio.h>
#include <fcntl.h>
#include <signal.h>

void sig_int(void);

char *dev_name = "/dev/wand"; //Char. device for barcode reader on linux.
int fd;

int main(void)
{
      int video;
      char buf[1];

      fd = open(dev_name, O_RDONLY);
      if ( fd == -1 ) { /* open failed */
           printf("cannot open %s\n",dev_name);
           return;
      } else
           printf(" %s opened for reading\n",dev_name);


      /* catch control-c */
      signal(SIGINT,(void *)sig_int);

      while ( 1 ) {
           video = read(fd,buf,1);
           if ( video == 0x00 ) printf(" WHITE\r");
           if ( video == 0x80 ) printf(" BLACK\r");
      }
}

void sig_int(void)
{
      int err;

      err = close(fd);
      printf("\nwand %d closed, err = %d\n",fd,err);
      signal(SIGINT,SIG_DFL);
}



Judul: Re: penggunaan barcode reader
Ditulis oleh: pacistrong pada Oktober 14, 2010, 03:05:00 PM
bang bernando mau donk contoh penggunaan dalam C# visual studio kalo msh ada bisa minta tolong kirimin di [email protected]. id thx bang..