要在Android設備上讀取串口數據,可以使用Android的串口通信庫,如usb-serial-for-android。以下是一個簡單的示例代碼,演示了如何讀取串口數據:
build.gradle
文件中添加以下依賴項:implementation 'com.github.mik3y:usb-serial-for-android:3.2.0'
SerialReadTask
類,用于在后臺線程讀取串口數據:import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import com.hoho.android.usbserial.util.SerialInputOutputManager;
import java.io.IOException;
import java.util.concurrent.Executors;
public class SerialReadTask implements SerialInputOutputManager.Listener {
private SerialInputOutputManager mSerialIoManager;
public SerialReadTask(UsbManager usbManager, UsbDevice usbDevice) {
mSerialIoManager = new SerialInputOutputManager(usbDevice, usbManager);
mSerialIoManager.setListener(this);
Executors.newSingleThreadExecutor().submit(mSerialIoManager);
}
@Override
public void onNewData(byte[] data) {
// 處理讀取到的數據
}
@Override
public void onRunError(Exception e) {
// 處理運行時錯誤
}
public void stop() {
mSerialIoManager.stop();
}
}
Activity
中使用SerialReadTask
類來讀取串口數據:import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
private SerialReadTask mSerialReadTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
UsbManager usbManager = (UsbManager) getSystemService(USB_SERVICE);
UsbDevice usbDevice = ... // 獲取目標串口設備
mSerialReadTask = new SerialReadTask(usbManager, usbDevice);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mSerialReadTask != null) {
mSerialReadTask.stop();
}
}
}
上述代碼是一個簡單的示例,用于讀取串口數據并在onNewData()
方法中處理數據。請注意,要執行串口通信,您需要有相應的權限,并且要正確配置和檢測您要連接的串口設備。