加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 (https://www.pinziwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 应用 > 正文

从android应用程序成功发送数据后,蓝牙打印机无法打印数据

发布时间:2022-12-06 15:23:33 所属栏目:应用 来源:
导读:  请帮帮忙。我正在开发一个简单的蓝牙打印机应用程序,在那里我想打印user.My代码输入的数据工作正常蓝牙应用程序,但打印机没有打印数据。目前我使用的是MTP -U- 85蓝牙打印机。当我从我的应用程序发送数据时,打
  请帮帮忙。我正在开发一个简单的蓝牙打印机应用程序,在那里我想打印user.My代码输入的数据工作正常蓝牙应用程序,但打印机没有打印数据。目前我使用的是MTP -U- 85蓝牙打印机。当我从我的应用程序发送数据时,打印机颜色从绿色变为蓝色color.Also当我连接和断开蓝牙时,颜色在绿色和蓝色、蓝色和绿色之间变化。所有的工作都正常,但是数据没有打印出来。
 
  我会给你我的密码
 
  import android.bluetooth.BluetoothAdapter;
  import android.bluetooth.BluetoothDevice;
  import android.bluetooth.BluetoothSocket;
  import android.content.Intent;
  import android.os.Handler;
  import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;
  import android.view.View;
  import android.widget.Button;
  import android.widget.EditText;
  import android.widget.TextView;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.OutputStream;
  import java.util.Set;
  import java.util.UUID;
  public class MainActivity extends AppCompatActivity {
      // will show the statuses like bluetooth open, close or data sent
      TextView myLabel;
      // will enable user to enter any text to be printed
      EditText myTextbox;
      // android built in classes for bluetooth operations
      BluetoothAdapter mBluetoothAdapter;
      BluetoothSocket mmSocket;
      BluetoothDevice mmDevice;
      // needed for communication to bluetooth device / network
      OutputStream mmOutputStream;
      InputStream mmInputStream;
      Thread workerThread;
      byte[] readBuffer;
      int readBufferPosition;
      volatile boolean stopWorker;
      Button openButton ;
      Button sendButton ;
      Button closeButton;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          try {
              // we are going to have three buttons for specific functions
              openButton = findViewById(R.id.open);
              sendButton = findViewById(R.id.send);
              closeButton = findViewById(R.id.close);
  // text label and input box
              myLabel = (TextView) findViewById(R.id.label);
              myTextbox = (EditText) findViewById(R.id.entry);
              openButton.setOnClickListener(new View.OnClickListener() {
                  public void onClick(View v) {
                      try {
                          findBT();
                          openBT();
                      } catch (IOException ex) {
                          ex.printStackTrace();
                      }
                  }
              });
          }
          catch(Exception e)
          {
              e.printStackTrace();
          }
          // send data typed by the user to be printed
          sendButton.setOnClickListener(new View.OnClickListener() {
              public void onClick(View v) {
                  try {
                      sendData();
                  } catch (IOException ex) {
                      ex.printStackTrace();
                  }
              }
          });
          // close bluetooth connection
          closeButton.setOnClickListener(new View.OnClickListener() {
              public void onClick(View v) {
                  try {
                      closeBT();
                  } catch (IOException ex) {
                      ex.printStackTrace();
                  }
              }
          });
      }
      private void closeBT()  throws IOException{
          try {
              stopWorker = true;
              mmOutputStream.close();
              mmInputStream.close();
              mmSocket.close();
              myLabel.setText("Bluetooth Closed");
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
      // this will send text data to be printed by the bluetooth printer
      void sendData() throws IOException {
          try {
  //            if(mmOutputStream==null) {
                  // the text typed by the user
                  EditText myTextbox = (EditText) findViewById(R.id.entry);
                  String msg = myTextbox.getText().toString();
                  msg += "\n";
                  mmOutputStream = mmSocket.getOutputStream();
                  mmOutputStream.write(msg.getBytes());
                  // tell the user data were sent
                  myLabel.setText("Data sent.");
  //            }
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
      // tries to open a connection to the bluetooth printer device
      void openBT() throws IOException {
          try {
              // Standard SerialPortService ID
              UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
              mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
              mmSocket.connect();
              mmOutputStream = mmSocket.getOutputStream();
              mmInputStream = mmSocket.getInputStream();
              beginListenForData();
              myLabel.setText("Bluetooth Opened");
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
      /*
       * after opening a connection to bluetooth printer device,
       * we have to listen and check if a data were sent to be printed.
       */
      void beginListenForData()
      {
          try {
              final Handler handler = new Handler();
              // this is the ASCII code for a newline character
              final byte delimiter = 10;
              stopWorker = false;
              readBufferPosition = 0;
              readBuffer = new byte[1024];
              workerThread = new Thread(new Runnable() {
                  public void run() {
                      while (!Thread.currentThread().isInterrupted() && !stopWorker) {
                          try {
                              int bytesAvailable = mmInputStream.available();
                              if (bytesAvailable > 0) {
                                  byte[] packetBytes = new byte[bytesAvailable];
                                  mmInputStream.read(packetBytes);
                                  for (int i = 0; i < bytesAvailable; i++) {
                                      byte b = packetBytes[i];
                                      if (b == delimiter) {
                                          byte[] encodedBytes = new byte[readBufferPosition];
                                          System.arraycopy(
                                                  readBuffer, 0,
                                                  encodedBytes, 0,
                                                  encodedBytes.length
                                          );
                                          // specify US-ASCII encoding
                                          final String data = new String(encodedBytes, "US-ASCII");
                                          readBufferPosition = 0;
                                          // tell the user data were sent to bluetooth printer device
                                          handler.post(new Runnable() {
                                              public void run() {
                                                  myLabel.setText(data);
                                              }
                                          });
                                      } else {
                                          readBuffer[readBufferPosition++] = b;
                                      }
                                  }
                              }
                          } catch (IOException ex) {
                              stopWorker = true;
                          }
                      }
                  }
              });
              workerThread.start();
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
      private void findBT() {
          try {
              mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
              if(mBluetoothAdapter == null) {
                  myLabel.setText("No bluetooth adapter available");
              }
              if(!mBluetoothAdapter.isEnabled()) {
                  Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                  startActivityForResult(enableBluetooth, 0);
              }
              Set pairedDevices = mBluetoothAdapter.getBondedDevices();
              if(pairedDevices.size() > 0) {
                  for (BluetoothDevice device : pairedDevices) {
                      // RPP300 is the name of the bluetooth printer device
                      // we got this name from the list of paired devices
                      if (device.getAddress().equals("DC:1D:30:35:3E:64")) {
                          mmDevice = device;
                          break;
                      }
                  }
              }
              myLabel.setText("Bluetooth device found.");
          }catch(Exception e){
              e.printStackTrace();
          }
      }
  }
  复制
 

(编辑:拼字网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!