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...!!!!
wah jadi pengen nyimak ni,..
ayo dong yang tahu infonya share disini,..
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
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
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;
}
^
^
Ganti nama port dari COM1 atau COM* ke /dev/usb* jika diterapkan pada GNU/Linux | varian UNIX.
bang, saya compile di windows pake dev-c++ kok banyak yang eror ya, banyak yang undeclared
eh sudah bang,..
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
bang, kalau boleh tahu pemasangan/setting barcode reader dan alat yang digunakan untuk mengambil sidik jari digital (apa ya namanya?) itu sama ya?
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*).
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...
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..!
^
^
^
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
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.
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
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
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
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..?
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...
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);
}
bang bernando mau donk contoh penggunaan dalam C# visual studio kalo msh ada bisa minta tolong kirimin di
[email protected]. id thx bang..