从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(); } } } 复制 (编辑:拼字网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐


