harryjph / android-bluetooth-serial

A library for Android to simplify basic serial communication over Bluetooth, for example when communicating with Arduinos.
Apache License 2.0
176 stars 60 forks source link

Newline driven approach #8

Open stefanlechner opened 4 years ago

stefanlechner commented 4 years ago

After debugging a while, I figured out, that the communication is hard newline driven.

            synchronized(inputStream) {
                try {
                    val receivedString = **reader.readLine()**
                    if (!TextUtils.isEmpty(receivedString)) {
                        emitter.onNext(receivedString)
                    }
                } catch (e: Exception) {
                    if (!emitter.isCancelled && !closed.get()) {
                        emitter.onError(e)
                    }
                }

My communication requries a # or \r\n as delimiter. There are several ways to solve this, the easiest and most flexibility providing solution, seems to me, changing from reader.readLine() to a scanner with a regex. Are you interested in a modification like this ?

harryjph commented 4 years ago

The problem is that I haven't released the current master branch, which contains a fix for this problem: a method to directly access the OutputStream so you can handle input however you like. I will try to get this release out, I didn't release it as I didn't get enough of a chance to test it...

If you would like to use this now, try using the master branch snapshot release from JitPack