Skip to content

Latest commit

 

History

History
150 lines (127 loc) · 7.24 KB

README_EN.md

File metadata and controls

150 lines (127 loc) · 7.24 KB

Android-Serialport

Porting Google's official serial port library android-serialport-api,only supports serial port name and baud rate. This item adds support check digit, data bit, stop bit, flow control configuration item.

Android-Serialport

GitHub forksGitHub issuesGitHub starsSource persentJcenter2.1Maven Central GitHub license

Document

中文 | English

Usage

  1. Open your root build.gradle and add mavenCentral():
allprojects {
    repositories {
        ...
        mavenCentral()
    }
}
  1. To add a dependency to your project, specify a dependency configuration such as implementation in the dependencies block of your module's build.gradle file.
dependencies {
    implementation 'io.github.xmaihh:serialport:2.1.1'
}

Attribute

Attributes parameter
Baud rate BAUDRATE
Data bit 5,6,7,8 ; default value 8
Parity bit No parity (NONE), odd parity (ODD), even parity (EVEN), 0 parity(SPACE), 1 parity(MARK); default no parity
Stop bit 1,2 ; default value 1
Flow Control No flow control (NONE), hardware flow control (RTS/CTS), software flow control (XON/XOFF); flow control is not used by default

Function

1.List the serial port

serialPortFinder.getAllDevicesPath();

2.Serial port property settings

serialHelper.setPort(String sPort);      //set serial port
serialHelper.setBaudRate(int iBaud);     //set baud rate
serialHelper.setStopBits(int stopBits);  //set stop bit
serialHelper.setDataBits(int dataBits);  //set data bit
serialHelper.setParity(int parity);      //set parity
serialHelper.setFlowCon(int flowcon);    //set flow control

Serial port property settings must be set before the function 'open()' is executed.

3. Open the serial port

serialHelper.open();

4.Close the serial port

serialHelper.close();

5.Send

serialHelper.send(byte[] bOutArray); // send byte[]
serialHelper.sendHex(String sHex);  // send Hex
serialHelper.sendTxt(String sTxt);  // send ASCII

6.Receiving

 @Override
protected void onDataReceived(final ComBean comBean) {
       Toast.makeText(getBaseContext(), new String(comBean.bRec, "UTF-8"), Toast.LENGTH_SHORT).show();
   }

7.Sticky processing

Support sticky package processing, the reason is seen in the issues#1 , the provided sticky package processing

  • Not processed (default)
  • First and last special character processing
  • Fixed length processing
  • Dynamic length processing

Supports custom sticky packet processing.

Step 1

The first step is to implement the AbsStickPackageHelper interface.

/**
 * Accept the message, the helper of the sticky packet processing, return the final data through inputstream, need to manually process the sticky packet, and the returned byte[] is the complete data we expected.
 * Note: This method will be called repeatedly until it resolves to a complete piece of data. This method is synchronous, try not to do time-consuming operations, otherwise it will block reading data.
 */
public interface AbsStickPackageHelper {
    byte[] execute(InputStream is);
}

Step 2

Set sticky package processing

serialHelper.setStickPackageHelper(AbsStickPackageHelper mStickPackageHelper);

Screenshots

Screenshot showing screen

PC-side debugging tools Serial debugging tool for Win

Changelog

Added

  • Add support for setting parity: 0 parity(SPACE), 1 parity(MARK)
  • Added support for setting custom baud rate issues#26

Fixed

Added

  • Add support settings to receive data sticky packet processing, support for setting custom sticky packet processing

Added

  • Add support for setting parity, data bits, stop bits, flow control configuration items

Added

  • Basic function, serial port set serial port number, baud rate, send and receive data

FAQ

Watch out This library does not provide ROOT permissions, please open the serial port '666' permissions yourself.

adb shell  chmod 666 /dev/ttyS1

Contribute

Please do contribute! Issues and pull requests are welcome.

Thank you for your help improving software one changelog at a time!