[Android Studio]的串口(serial Port)通信

Android Studio的串口(serial Port)通信

首先欢迎大家能够有缘分搜索到这篇文章,相信在CSDN上应该有各种各样的关于串口通信的博客,或者调用函数啊,但是都是零零散散的,不全面,有时候还要几篇文章一起看,最后程序还报错!我自己这边调试以后,从开始到结尾都贴出来,免得自己忘记,也分享给大家。如果有什么不对的地方希望大家批评指正!
下面是我参考的一些文章:
https://blog.csdn.net/m0_38047321/article/details/78833476?tdsourcetag=s_pctim_aiomsg
https://blog.csdn.net/Hi_Red_Beetle/article/details/78994767
https://blog.csdn.net/akunainiannian/article/details/8740007

串行端口 (SerialPort)

串行端口 (SerialPort)简称:串口,主要用于数据被逐位按顺序传送的通讯方式称为串口通讯(简单来讲就是按顺序一位一位地传输数据)。

常见的串口有25针和9针(遵循RS-232标准)

串口通信(Serial Communications)的概念比较简单,串口按位(bit)发送和接收字节。串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线(GND)、发送(TX)、接收(RX)。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。

步骤-熟知我们需要用到的文件及位置

1、关于安卓设备上使用串口,谷歌官方在github上有提供代码实例,里面有JNI的代码和串口API的java文件,工程的地址如下:
https://github.com/cepr/android-serialport-api
从github上下载这个工程下来后,在android-serialport-api文件夹里面可以找到jni文件夹,里面包含有SerialPort.c,如下:
我是直接放在桌面上的方便我查看,你们也可以放在别的盘我是直接放在桌面上的,方便我查看,你们也可以放在别的盘,只是告诉大家下载以后,c文件在哪儿。
2、找到三个.so文件!也在这个包里面,到时候可以放到我们新建的工程文件包里面去在这里插入图片描述
3、在Android Studio 新建一个工程
在这里插入图片描述
名字自己起就可以了

配置串口其他参数

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Android Studio 中进行串口通信,需要使用一个串口库来实现。这里介绍一种常用的串口库:`usb-serial-for-android`。 步骤如下: 1. 在 build.gradle 中添加以下依赖: ``` dependencies { implementation 'com.github.felHR85:UsbSerial:6.1.3' } ``` 2. 在 AndroidManifest.xml 中添加以下权限: ``` <uses-permission android:name="android.permission.USB_PERMISSION" /> <uses-feature android:name="android.hardware.usb.host" /> ``` 3. 在 MainActivity.java 中添加以下代码: ``` private static final String TAG = "MainActivity"; private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) { UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); if (device != null) { // 连接串口设备 connectToDevice(device); } } } }; private UsbSerialPort port; private UsbManager usbManager; private void connectToDevice(UsbDevice device) { // 获取 USB 设备的权限 PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); usbManager.requestPermission(device, pi); // 打开串口 UsbDeviceConnection connection = usbManager.openDevice(device); if (connection == null) { Log.e(TAG, "Failed to open USB device"); return; } UsbSerialDevice serialDevice = UsbSerialDevice.createUsbSerialDevice(device, connection); if (serialDevice != null && serialDevice.open()) { serialDevice.setBaudRate(9600); serialDevice.setDataBits(UsbSerialInterface.DATA_BITS_8); serialDevice.setStopBits(UsbSerialInterface.STOP_BITS_1); serialDevice.setParity(UsbSerialInterface.PARITY_NONE); serialDevice.setFlowControl(UsbSerialInterface.FLOW_CONTROL_OFF); // 设置串口接收数据的回调函数 serialDevice.read(mCallback); Log.i(TAG, "Serial device opened successfully"); } else { Log.e(TAG, "Failed to open serial device"); } } private UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() { @Override public void onReceivedData(byte[] data) { // 接收到串口数据 String message = new String(data); Log.i(TAG, "Received message: " + message); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); usbManager = (UsbManager) getSystemService(Context.USB_SERVICE); // 注册广播接收器 IntentFilter filter = new IntentFilter(); filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED); registerReceiver(broadcastReceiver, filter); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(broadcastReceiver); if (port != null) { try { port.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 在 `connectToDevice()` 方法中,我们获取了 USB 设备的权限,并打开了串口设备,设置了一些串口参数,最后设置了接收数据的回调函数。 在 `onCreate()` 方法中,我们注册了一个广播接收器,用于接收 USB 设备插入的广播事件。 在 `onDestroy()` 方法中,我们取消了广播接收器的注册,并关闭了串口设备。 以上就是在 Android Studio 中进行串口通信的基本步骤。需要注意的是,串口通信需要硬件支持,所以要确保你的设备支持串口通信

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值