普通的手机、平板上是没有串口的,在特定的需求下,手机、平板或其他设备想要与硬件设备进行数据操作时可以额外增加串口,然后通过串口进行信息交互。
下面介绍串口的基本配置:
工具:Android Studio
前提:使用谷歌的串口调试程序进行相关操作,在设备有串口的情况下进行调试操作。
首先先进行串口的相关申明与配置:
build.gradle的相关配置:
在项目中加入相关的配置文件:
http://note.youdao.com/noteshare?id=629bd3e99714417e3cb55500e6abc0d0&sub=38D65333A0CB42D88B509B7DDBDB256C
箭头所指的就是文件夹需要加入到项目中去,上方分享链接中的others.rar中有上图相关的配置文件。
在需要调用串口的相关文件中
在串口调试中需要先获取当前设备的串口号:
获取相关的串口号:
String[] entryValues = mSerialPortFinder.getAllDevicesPath();
//打开串口号 、dev/ttymxc3 选择波特率 115200
ComA.setPort(entryValues[5]);
ComA.setBaudRate("115200");
OpenComPort(ComA);
获取完成后再打开串口:
//打开串口相关操作
private void OpenComPort(SerialHelper ComPort) {
try {
ComPort.open();
} catch (SecurityException e) {
ShowMessage("打开串口失败:没有串口读/写权限!");
} catch (IOException e) {
ShowMessage("打开串口失败:未知错误!");
} catch (InvalidParameterException e) {
ShowMessage("打开串口失败:参数错误!");
}
}
//显示消息
private void ShowMessage(String sMsg) {
Toast.makeText(this, sMsg, Toast.LENGTH_SHORT).show();
}
private class SerialControl extends SerialHelper {
public SerialControl() {
}
@Override
protected void onDataReceived(final ComBean ComRecData) {
// DispQueue.AddQueue(ComRecData);//线程定时刷新显示(推荐)
receiveDataOne(ComRecData);
}
}
//返回值可能为多段,所以接收到的数据有可能缺少开始的1~2位数(具体的数值是由发送方决定)(错误)
//上面的是错误的,真正决定传输速度的是波特率,波特率的值越大传输速率越快(具体原因不清楚,待补充)
final String res = MyFunc.hexStr2Str(MyFunc.byteArrayToHexString(ComRecData.bRec));
NursingBedActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
text.setText(res);
}
});
Log.e("打印的结果是:", res);
}
//拿到这些数据后可以进行相关操作
在需要关闭串口时调用:
CloseComPort(ComA);//传入当前的串口号
//关闭串口
private void CloseComPort(SerialHelper ComPort) {
if (ComPort != null) {
ComPort.stopSend();
ComPort.close();
}
Log.e("CloseComport", ComPort.getPort() + "");
}
在开发初期自身调试的时候可以使用串口调试工具进行调试、自测:
调试工具:用于向设备发送串口数据、接收设备发送的串口数据
http://note.youdao.com/noteshare?id=78b3a910e1cad437f265abccc8f68da1&sub=344EF6C55D824A60872EF8FDA2728EC5
上方链接中最下方的程序就是串口调试程序。
有道云笔记链接:http://note.youdao.com/noteshare?id=c06ed24f4e080f4bb38eae77e6fb2590
该链接中的内容包括本文章的所有内容,但是由于本人比较菜,内容会随时更新。。。