Symbol 数据采集器开发 Demo

一.创建项目

   打开visual 2005,文件->新建->项目

 

二.设计界面,编写代码

首先进行系统界面设计,编写相关逻辑代码处理

在初始化窗体时,加载扫描头触发事件

 

private  SymbolScanWood.SymbolScanWood _objScan  =   new  SymbolScanWood.SymbolScanWood( " Text " );

private   void  Zone_Load( object  sender, EventArgs e)
... {
        Cursor.Current 
= Cursors.WaitCursor;
        _objScan.MyAfterRead 
+= new EventHandler(_objScan_OnAfterRead);
        Cursor.Current 
= Cursors.Default;
 }

private   void  _objScan_OnAfterRead( object  sender, EventArgs e)
        
... {
            tbZone.Text 
= _objScan.BarcodeText;//进行扫描相关逻辑处理
        }

 

窗体关闭时,关闭扫描头,释放扫描头资源,同时保存数据

 

         private   void  Zone_Closing( object  sender, CancelEventArgs e)
        
... {
            _objScan.TermReader();
        }

 

程序中引用的symbolScanWood.dll代码如下:

 

using  System;
using  System.Collections.Generic;
using  System.Text;

namespace  SymbolScanWood
... {
    
public class SymbolScanWood
    
...{
        
private string _strBarcode = "";
        
private byte[] _byteBarcodeData;
        
private string _strBarcodeType;
        
private int _nBarcodeLenth = 0;
        
private bool _bSuccess = false;
        
private DateTime _dTimeStamp;
        
private string _strDataType;

        
private Symbol.Barcode.Reader _MyReader = null;
        
private Symbol.Barcode.ReaderData _MyReaderData = null;
        
private System.EventHandler _MyEventHandler = null;
        
private event System.EventHandler _MyAfterRead = null;

        
public string BarcodeText
        
...{
            
get ...return _strBarcode; }
        }


        
public byte[] BarcodeData
        
...{
            
get ...return _byteBarcodeData; }
        }


        
public string BarcodeType
        
...{
            
get ...return _strBarcodeType; }
        }


        
public int BarcodeLenth
        
...{
            
get ...return _nBarcodeLenth; }
        }


        
public bool Success
        
...{
            
get ...return _bSuccess; }
        }


        
public DateTime TimeStamp
        
...{
            
get ...return _dTimeStamp; }
        }


        
public string DataType
        
...{
            
get ...return _strDataType; }
        }


        
public SymbolScanWood(string strDataType)
        
...{
            
if ((strDataType != "Text"&& (strDataType != "Binary"))
            
...{
                
throw new Exception("设置扫描类型错误!");
            }

            
this._MyReader = null;
            
this._strDataType = strDataType;
            
this._MyReaderData = null;
            
this._MyEventHandler = null;
            
this._bSuccess = false;
            
this._strBarcodeType = "";
            
this._nBarcodeLenth = 0;
            
this._dTimeStamp = DateTime.Now;
            
this._strBarcode = "";
            
this._byteBarcodeData = new byte[0];

            InitReader();
            
this.StartRead();
        }


        
~SymbolScanWood()
        
...{
            
this.StopRead();
            
this.TermReader();
        }


        
public System.EventHandler MyAfterRead
        
...{
            
get...{return _MyAfterRead;}
            
set...{_MyAfterRead=value;}
        }



        
/**//// <summary>
        
/// Initialize the reader.
        
/// </summary>

        public bool InitReader()
        
...{
            
// If reader is already present then fail initialize
            if (_MyReader != null)
            
...{
                
return false;
            }


            
// Create new reader, first available reader will be used.
            _MyReader = new Symbol.Barcode.Reader();

            
// Create reader data
            if(_strDataType.ToLower().Trim() == "Binary")
            
...{
                _MyReaderData 
= new Symbol.Barcode.ReaderData(
                    Symbol.Barcode.ReaderDataTypes.Binary,
                    Symbol.Barcode.ReaderDataLengths.MaximumLabel);
            }

            
else
            
...{
                _MyReaderData 
= new Symbol.Barcode.ReaderData(
                    Symbol.Barcode.ReaderDataTypes.Text,
                    Symbol.Barcode.ReaderDataLengths.MaximumLabel);
            }


            
this._MyEventHandler = new EventHandler(MyReader_ReadNotify);

            
// Enable reader, with wait cursor
            _MyReader.Actions.Enable();

            _MyReader.Parameters.Feedback.Success.BeepTime 
= 0;
            _MyReader.Parameters.Feedback.Success.WaveFile 
= "/windows/alarm3.wav";

            
return true;
        }


        
/**//// <summary>
        
/// Stop reading and disable/close reader
        
/// </summary>

        public void TermReader()
        
...{
            
// If we have a reader
            if ( this._MyReader != null )
            
...{
                
// Disable the reader
                this._MyReader.Actions.Disable();

                
// Free it up
                this._MyReader.Dispose();

                
// Indicate we no longer have one
                this._MyReader = null;
            }


            
// If we have a reader data
            if ( this._MyReaderData != null )
            
...{
                
// Free it up
                this._MyReaderData.Dispose();

                
// Indicate we no longer have one
                this._MyReaderData = null;
            }

        }


        
/**//// <summary>
        
/// Start a read on the reader
        
/// </summary>

        public void StartRead()
        
...{
            
// If we have both a reader and a reader data
            if ( ( this._MyReader != null ) &&
                ( 
this._MyReaderData != null ) )
            
...{
                
// Submit a read
                this._MyReader.ReadNotify += this._MyEventHandler;
                
this._MyReader.Actions.Read(this._MyReaderData);
            }

        }


        
/**//// <summary>
        
/// Stop all reads on the reader
        
/// </summary>

        public void StopRead()
        
...{
            
// If we have a reader
            if ( this._MyReader != null )
            
...{
                
// Flush (Cancel all pending reads)
                this._MyReader.ReadNotify -= this._MyEventHandler;
                
this._MyReader.Actions.Flush();
            }

        }


        
/**//// <summary>
        
/// Read complete or failure notification
        
/// </summary>

        private void MyReader_ReadNotify(object sender, EventArgs e)
        
...{
            Symbol.Barcode.ReaderData TheReaderData 
= this._MyReader.GetNextReaderData();

            
// If it is a successful read (as opposed to a failed one)
            if ( TheReaderData.Result == Symbol.Results.SUCCESS )
            
...{
                _bSuccess 
= true;
                
// Handle the data from this read
                this.HandleData(TheReaderData);

                
// Start the next read
                this.StartRead();
            }

            
else
            
...{
                _bSuccess 
= false;
            }


            
if(_MyAfterRead != null)
                _MyAfterRead(sender, e);
        }


        
/**//// <summary>
        
/// Handle data from the reader
        
/// </summary>

        private void HandleData(Symbol.Barcode.ReaderData TheReaderData)
        
...{
            _nBarcodeLenth 
= TheReaderData.Length;
            _strBarcodeType 
= TheReaderData.Type.ToString();
            _dTimeStamp 
= TheReaderData.TimeStamp;

            
if(_strDataType.Trim() == "Text")
            
...{
                _strBarcode 
= TheReaderData.Text;
            }

            
else
            
...{
                _byteBarcodeData 
= new byte[_nBarcodeLenth];
                
for (int i = 0; i < _nBarcodeLenth; i++)
                
...{
                    _byteBarcodeData[i] 
= TheReaderData.RawData[i];
                }

            }

        }

    }

}

 

James

http://www.cardprinterworld.com

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值