Android串口log的获取

常遇到无法开机的状况,这时由于Android还未起来,adb等均无法使用,此时有抓串口的必要。

1.命令安装

sudo apt-get update
sudo apt-get install minicom

2.安装完毕后,插入串口线,进入/dev/目录查看设备


图中红圈即插入串口后,新增的serial目录和ttyUSB0字符设备

其中serial目录中内容如下,均是指向ttyUSB0的链接:



3.接下来即配置minicom,按照提示,按下Ctrl + A后执行Z可以显示帮助菜单(如下图所示)。


之后可以选择O,选择Serial port setup 项,可以修改配置波特率等,例如:当前项目使用的时921600。

4.凡是需要执行某一命令之前,均需先同时按下Ctrl + A,其余操作很类似与BIOS中的操作。


5.接着就是如何抓取log了。

可以配置输出并保存至指定路径的文件,也可不指定目录,即默认为当前目录(Ctrl + A, L, enter保存)。


在此之前先连接上开发板,点击power启动开机流程。

此时界面会有log输出,并同时再当前目录中保存有minicom.log。

user@swd3:/local/sdb/telecom$ ls -l
total 104
-rw-r--r-- 1 root root 103373 Jun  9 19:46 minicom.log

此时从log来看,按下power手机震动,并未亮屏,此时确实电池电量过低造成,与log相符。

并不是之前期望抓取的log,之前一直停留在开机动画起始阶段,此处不再贴出对应的log。


  • 1
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android 串口通讯可以通过使用 USB 转串口线连接串口设备,并通过 Android 应用程序与其进行通信。以下是在 Android 应用程序中使用串口通讯的步骤: 1. 获取 USB 权限:在 AndroidManifest.xml 文件中添加以下权限: ```xml <uses-feature android:name="android.hardware.usb.host" /> <uses-permission android:name="android.permission.USB_PERMISSION" /> ``` 在应用程序中获取 USB 权限: ```java private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION"; private PendingIntent mPermissionIntent; private UsbManager mUsbManager; private UsbDevice mDevice; mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE); mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION); registerReceiver(mUsbReceiver, filter); HashMap<String, UsbDevice> deviceList = mUsbManager.getDeviceList(); Iterator<UsbDevice> deviceIterator = deviceList.values().iterator(); while (deviceIterator.hasNext()) { UsbDevice device = deviceIterator.next(); if (device.getVendorId() == VENDOR_ID && device.getProductId() == PRODUCT_ID) { mDevice = device; mUsbManager.requestPermission(mDevice, mPermissionIntent); break; } } private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (ACTION_USB_PERMISSION.equals(action)) { synchronized (this) { UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) { if(device != null){ // 权限已获取,进行串口通讯 } } else { Log.d(TAG, "permission denied for device " + device); } } } } }; ``` 2. 打开串口:使用 UsbManager 打开串口连接: ```java private UsbDeviceConnection mConnection; private UsbSerialPort mPort; private UsbSerialDriver mDriver; List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(mUsbManager); if (!availableDrivers.isEmpty()) { mDriver = availableDrivers.get(0); mConnection = mUsbManager.openDevice(mDriver.getDevice()); if (mConnection != null) { List<UsbSerialPort> ports = mDriver.getPorts(); mPort = ports.get(0); mPort.open(mConnection); mPort.setParameters(9600, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE); } } ``` 3. 读写数据:使用 UsbSerialPort 进行数据读写: ```java private UsbSerialPort mPort; private byte[] mReadBuffer = new byte[4096]; private UsbSerialPort.ReadCallback mCallback = new UsbSerialPort.ReadCallback() { @Override public void onReceivedData(byte[] data) { // 处理收到的数据 } }; public void writeData(byte[] data) { try { if (mPort != null) { mPort.write(data, WRITE_TIMEOUT); } } catch (IOException e) { e.printStackTrace(); } } public void readData() { try { if (mPort != null) { int len = mPort.read(mReadBuffer, READ_TIMEOUT); if (len > 0) { byte[] data = Arrays.copyOf(mReadBuffer, len); // 处理收到的数据 } } } catch (IOException e) { e.printStackTrace(); } } ``` 以上就是在 Android 应用程序中使用串口通讯的基本步骤。需要注意的是,不同的串口设备可能需要不同的参数进行设置,具体的参数需要根据设备的要求进行设置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值