当前位置:   article > 正文

android串口通信_android serialconnection

android serialconnection

一、串口通信原理

串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。

串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线(GND)、发送(TX)、接收(RX)。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须和通讯协议保持一致;

二、串口通信实现

1.项目配置

SerialPort 包名必须一致

启动串口

  1. public static SerialConnection getInstance() {
  2. return instance;
  3. }
  4. public void register(Handler mHander) {
  5. this.mHandler = mHander;
  6. }
  7. /**
  8. * 启动串口接受信息
  9. */
  10. public void startSerial(int rate) {
  11. lodg("[startSerial]......rate===>" + rate);
  12. try {
  13. //三个参数 1.哪个口 2.波特率 3.校验方式
  14. mSerialPort = new SerialPort(new File("/dev/ttyS1"), rate, 'o');
  15. } catch (Exception e) {
  16. lodg("[startSerial]......e===>" + e.toString());
  17. }
  18. if (mSerialPort != null) {
  19. mInputStream = mSerialPort.getInputStream();
  20. mOutputStream = mSerialPort.getOutputStream();
  21. }
  22. mRecvThread = new RecvThread();
  23. mRecvThread.start();
  24. }
  25. class RecvThread extends Thread {
  26. private boolean mExit = false;
  27. @Override
  28. public void run() {
  29. while (!mExit) {
  30. receiveSerial();
  31. }
  32. }
  33. public void exit() {
  34. mExit = true;
  35. }
  36. }
  37. /**
  38. * 接受串口信息
  39. */
  40. private void receiveSerial() {
  41. try {
  42. if (mInputStream != null) {
  43. int len = mInputStream.read(mUartReadBuffer);
  44. if (len > 0) {
  45. String serialStr = byte2String(mUartReadBuffer, len);
  46. lodg("serialStr: ===>" + serialStr);
  47. if (serialStr.length() > 0 && !serialStr.equals("00")) {
  48. dispatchCmds(serialStr);
  49. }
  50. }
  51. }
  52. } catch (Exception e) {
  53. lodg("[receiveSerial]......e===>" + e.toString());
  54. }
  55. }

发送串口信息

  1. /**
  2. * 发送串口信息
  3. *
  4. * @param cmd
  5. */
  6. public void sendSerial(final String cmd) {
  7. lodg("[sendSerial].....cmd===>" + cmd);
  8. new Thread() {
  9. @Override
  10. public void run() {
  11. super.run();
  12. byte[] test = hexStringToBytes(cmd);
  13. try {
  14. if (mOutputStream != null) {
  15. mOutputStream.write(test);
  16. mOutputStream.flush();
  17. }
  18. } catch (Exception e1) {
  19. e1.printStackTrace();
  20. }
  21. }
  22. }.start();
  23. }

电脑调试串口工具

所需文件以及串口调试工具下载

https://download.csdn.net/download/printlnout/11289137

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/825809
推荐阅读
相关标签
  

闽ICP备14008679号