前言
其实这方面的文章以前就想写了,一直在草稿里吃灰,因为我觉得沙滩里可能就只有我在搞这些和硬件交互方面的,发了也没人看,直到今天我无意中看到
我才意识到 “老子青春又回来啦 呸..” 我又可以装**了
好了,让我们废话少说
上菜
为什么要说(很简单版)呢?不为什么啊,就是字面意思很简单,谷歌提供了一个官方的串口工具也是简单的直接去官网下载就好了,
但是单单的“简单”怎么能满足我们这些优秀的白嫖党呢,这里用的是我在其他的大佬那里嫖来的对串口工具的二次封装的.aar,贼好用,
一分钟搞定串口收发。来!上链接链接:
https://code.aliyun.com/ys-mhy/sprialPortTest.git
or百度网盘
https://pan.baidu.com/s/1siiU1Mac_5VtwvsdqvtGxA
提取码:4250
上面这个是阿里云的代码管理器,没有账号的可能要注册一下,项目名是sprialPortTest,为什么不用用GitHub呢,因为github太麻烦了,看见英文就头疼,总的来说我不够专业***
接下来是怎么用
很简单,导个包就可以
首先把下载好的demon的lib下面的serialport-1.0.1.aar放到自己的lib里
然后,都会啦,有包了,直接build.gradle导它
dependencies {
...
implementation files('libs\\serialport-1.0.1.aar')//串口工具 aar
}
还有
android {
...
defaultConfig {
...
ndk {
abiFilters "armeabi-v7a"//这个要加 不然找不到so
}
}
...
}
最后,直接看注释
public class MainActivity extends AppCompatActivity {
//串口工具
public SerialPortUtil mSerialPortUtil = new SerialPortUtil() {
private StringBuffer mSb;
//串口数据接收
@Override
protected void onDataReceived(byte[] var1, int size) throws InterruptedException {
//1、先确定自己设备用到的是哪个接口 然后control+点这个SerialPortUtil进去
//2、接受数据 串口数据是一段一段的 所以 得全部接受 然后自己判断结尾在哪 再做数据处理
mSb = new StringBuffer();//这里我用的是stringbuffer 比较安全
//数据接收
for(int i = 0; i < size; ++i) {
mSb.append(HexUtil.Byte2Hex(var1[i]));
}
Log.d("TAG", "onDataReceived: "+mSb);
//判断数据的结尾 这里我们这边的结尾设置cf是结尾 所以 判断msb的后两位是不是cf
if ("CF".equals(mSb.substring(mSb.length() - 2))) {
//todo:数据操作
//然后清除缓存 接受下一包的数据
mSb = new StringBuffer();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//开启串口
if (!mSerialPortUtil.isOpen()) {
try {
mSerialPortUtil.open();
} catch (IOException e) {
e.printStackTrace();
}
}
//发送数据 这里懒得写ui了 看log
if (mSerialPortUtil.isOpen()) {
mSerialPortUtil.sendHex("86AB0009010100CF");
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mSerialPortUtil.isOpen()) {//关闭串口
mSerialPortUtil.close();
}
}
}