Java 从Android触发多产条形码扫描设备

Java 从Android触发多产条形码扫描设备,java,android,Java,Android,对不起,我的英语不好。 我使用的是多产的设备,我需要向其传递命令和读取数据。我想将数据读取和写入com端口。 我引用了pl2303driver.jar库中给出的代码,这些代码是我从这里提供的SDK获得的 若我从条形码扫描器扫描一些东西,我就能够从com端口读取那个些数据。 若我向设备写入一些数据,write方法将返回写入的字节数。没问题。 但我想向设备发送命令,该设备将点亮条形码扫描器的灯光并扫描条形码。 我使用USB串行终端Lite应用程序。如果我发出命令#55#30#41#AA,USB串行

对不起,我的英语不好。 我使用的是多产的设备,我需要向其传递命令和读取数据。我想将数据读取和写入com端口。 我引用了pl2303driver.jar库中给出的代码,这些代码是我从这里提供的SDK获得的

若我从条形码扫描器扫描一些东西,我就能够从com端口读取那个些数据。 若我向设备写入一些数据,write方法将返回写入的字节数。没问题。 但我想向设备发送命令,该设备将点亮条形码扫描器的灯光并扫描条形码。 我使用USB串行终端Lite应用程序。如果我发出命令#55#30#41#AA,USB串行终端Lite将触发条形码扫描仪。 我想在我的应用程序中实现同样的效果。我尝试了文档中给出的#55#30#41#AA、0x55、0x30、0x41、0xAA命令。但它们不起作用。 我想我缺少了触发条形码扫描器的特定命令。 我在这里发布一些代码

PL2303Driver mSerial;
private static final String ACTION_USB_PERMISSION = "com.prolific.pl2303hxdsimpletest.USB_PERMISSION"; 

mSerial = new PL2303Driver((UsbManager) getSystemService(Context.USB_SERVICE),this,  ACTION_USB_PERMISSION); 
读取方法的代码:

private void readDataFromSerial()
{
    int len;
    byte[] rbuf = new byte[4096];
    StringBuffer sbHex=new StringBuffer();

    Log.d(TAG, "Enter readDataFromSerial");

if(null==mSerial)
    return;        

    if(!mSerial.isConnected()) 
        return;

    len = mSerial.read(rbuf);
    if(len<0) 
    {
        Log.d(TAG, "Fail to bulkTransfer(read data)");
        return;
    }

    if (len > 0)
    {           
           if (SHOW_DEBUG) 
           {
               Log.d(TAG, "read len : " + len);
           }                

           for (int j = 0; j < len; j++)
           {                   
                sbHex.append((char) (rbuf[j]&0x000000FF));
           }              
           etRead.setText(sbHex.toString());    
           Toast.makeText(this, "len="+len, Toast.LENGTH_SHORT).show();
    }
     else 
     {      
         if (SHOW_DEBUG) 
         {
             Log.d(TAG, "read len : 0 ");
         }
         etRead.setText("empty");
         return;
     }

    try 
    {
        Thread.sleep(50);
    } 
    catch (InterruptedException e)
    {
        e.printStackTrace();
    }

    Log.d(TAG, "Leave readDataFromSerial"); 
}
private void readDataFromSerial()
{
内伦;
字节[]rbuf=新字节[4096];
StringBuffer sbHex=新的StringBuffer();
Log.d(标记“输入readDataFromSerial”);
if(null==mSerial)
回来
如果(!mSerial.isConnected())
回来
len=mSerial.read(rbuf);
if(len0)
{           
如果(显示调试)
{
Log.d(标签“读取长度:+len”);
}                
对于(int j=0;j
写入方法代码:

   private void writeDataToSerial() 
   {

        Log.d(TAG, "Enter writeDataToSerial");

    if(null==mSerial)
        return;

        if(!mSerial.isConnected()) 
            return;

        String strWrite = etWrite.getText().toString(); //  

         if (SHOW_DEBUG) 
          {
            Log.d(TAG, "PL2303Driver Write(" + strWrite.length() + ") : " + strWrite);
         }

        int res = mSerial.write(strWrite.getBytes(), strWrite.length());
    if( res<0 )
         {
        Log.d(TAG, "setup: fail to controlTransfer: "+ res);
        return;
    } 

    Toast.makeText(this, "Write length: "+strWrite.length()+" bytes", Toast.LENGTH_SHORT).show(); 


    if (SHOW_DEBUG) 
    {
             Log.d(TAG, "PL2303Driver Write 2(" + strWrite.length() + ") : " + strWrite);
       }
    Log.d(TAG, "Leave writeDataToSerial");
    }
private void writeDataToSerial()
{
Log.d(标记“输入writeDataToSerial”);
if(null==mSerial)
回来
如果(!mSerial.isConnected())
回来
字符串strWrite=etWrite.getText().toString();//
如果(显示调试)
{
Log.d(标记“PL2303Driver Write”(“+strWrite.length()+”):“+strWrite”);
}
int res=mSerial.write(strWrite.getBytes(),strWrite.length());

如果(res正常。我在回答我自己的问题。我丢失了使扫描仪LED发光的命令。我设法得到了它。此外,还需要做以下事情:

波特率:9600

数据位:8

平价:无

停止位:1

pl2303driver.jar在这里非常有用