Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kelas ini ScannerBase menyediakan dua metode, DecodeDataLabel dan DecodeScanDataType untuk mendekode tanggal masuk. Metode ini dipanggil ketika properti ScanDataLabel dan ScanDataType, masing-masing, diakses. Kelas ScannerBase menunda dekode data hingga aplikasi mengakses properti data dan data yang didekodekan akan di-cache untuk pembacaan di masa mendatang.
Kelas ScannerBase mengimplementasikan ScannerBase.DecodeData atribut sebagaimana diperlukan oleh spesifikasi Unified Point Of Service (UnifiedPOS). Jika DecodeData tidak diatur ke true saat aplikasi membaca properti ScanDataLabel , array byte kosong akan dikembalikan. Demikian pula, ScanDataType mengembalikan BarCodeSymbology.Unknown. Fungsionalitas ini diimplementasikan di kelas ScannerBase dan transparan untuk aplikasi dan Objek Layanan.
Untuk mengimplementasikan DecodeScanDataLabel
Ambil alih anggota ScannerBasicdecodeScanDataLabel yang dilindungi.
DecodeScanData mengambil argumen, scanData, yang berisi buffer data lengkap. Tidak perlu menyimpan data tambahan apa pun dalam kode Objek Layanan.
DecodeScanData harus memproses data yang dipindai untuk menghapus informasi header dan jenis di awal dan akhir buffer data. Buffer yang dimodifikasi akan dikembalikan dalam bentuk array byte.
Untuk mengimplementasikan DecodeScanDataType
Ambil alih anggota ScannerBasic virtual yang dilindungi DecodeScanDataType.
Seperti DecodeScanDataLabel, DecodeScanDataType menerima argumen yang berisi buffer yang dipindai lengkap.
DecodeScanDataType memeriksa buffer untuk menemukan jenis data data yang dipindai dan mengembalikan nilai BarCodeSymbology yang sesuai.
Example
Kode berikut menunjukkan metode umum yang dapat diterapkan pengembang Objek Layanan untuk mengekstrak label dan nilai data dari buffer yang dipindai. Perhatikan bahwa kode ini menunjukkan perangkat tertentu. Objek Layanan yang berbeda akan memerlukan decoding khusus perangkat.
// Decode the incoming scanner data, removing header and
// type information.
override protected byte[] DecodeScanDataLabel(
byte[] scanData)
{
int i;
int len = 0;
// Get length of label data.
for (i = 5; i < (int)scanData[1]
&& (int)scanData[i] > 31; i++)
{
len++;
}
// Copy label data into buffer.
byte[] label = new byte[len];
len = 0;
for (i = 5; i < (int)scanData[1]
&& (int)scanData[i] > 31; i++)
{
label[len++] = scanData[i];
}
return label;
}
// Process the incoming scanner data to find the data type.
override protected BarCodeSymbology DecodeScanDataType(
byte[] scanData)
{
int i;
for (i = 5; i < (int)scanData[1]
&& (int)scanData[i] > 31; i++)
{
}
// last 3 (or 1) bytes indicate symbology.
if (i + 2 <= (int)ScanData[1])
{
return GetSymbology(
ScanData[i],
ScanData[i + 1],
ScanData[i + 2]);
}
else
{
return GetSymbology(ScanData[i], 0, 0);
}
}
// This method determines the data type by examining
// the end of the scanned data buffer. Either 1 byte
// or 3 byte is used to determine the type, depending on
// the incoming buffer.
static private BarCodeSymbology GetSymbology(
byte b1,
byte b2,
byte b3)
{
if (b1 == 0 && b3 == 11)
{
// Use all 3 bytes to determine the date type.
switch (b2)
{
case 10:
return BarCodeSymbology.Code39;
case 13:
return BarCodeSymbology.Itf;
case 14:
return BarCodeSymbology.Codabar;
case 24:
return BarCodeSymbology.Code128;
case 25:
return BarCodeSymbology.Code93;
case 37:
return BarCodeSymbology.Ean128;
case 255:
return BarCodeSymbology.Rss14;
default:
break;
}
}
else if (b2 == 0 && b3 == 0)
{
// Only use the first byte to determine the data type.
switch (b1)
{
case 13:
return BarCodeSymbology.Upca;
case 22:
return BarCodeSymbology.EanJan13;
case 12:
return BarCodeSymbology.EanJan8;
default:
break;
}
}
return BarCodeSymbology.Other;
}
Detail tambahan tentang bagaimana label dan tipe data harus diekstrak dari buffer data yang dipindai dapat ditemukan dalam spesifikasi UPOS.
Mengompilasi Kode
- Untuk informasi tambahan tentang membuat dan mengkompilasi proyek Objek Layanan, lihat Sampel Objek Layanan: Memulai.