【问题标题】:how to receive a string via bluetooth in kotlin如何在kotlin中通过蓝牙接收字符串
【发布时间】:2020-10-17 15:11:04
【问题描述】:

我需要创建一个函数,通过循环从缓冲区读取通过蓝牙接收的字符串,这是我到目前为止所做的,但它不起作用,如果我使用 while 循环,它只会卡在循环,也许我错过了正确的条件。

private suspend fun getmeData(){
        var bytes :Int
        val buffer: ByteArray = ByteArray(1024)
        var readMessage : String = ""
        if (m_isConnected ) {
            try {   

               while(){         
                   //read bytes received and ins to buffer
                   bytes =_bluetoothSocket!!.inputStream.read(buffer)
                   //convert to string
                   readMessage = readMessage + String(buffer, 0,bytes)
              }
            } catch (ex: Exception) {
                ex.printStackTrace()
                
            }
        } else {            
            val toast = Toast.makeText(
                contesto, "Non connesso",
                Toast.LENGTH_LONG
            )
            toast.show()
        }
    }

【问题讨论】:

  • 究竟是什么不起作用?有错误吗?输出是否错误,如果是,接收的输出与预期的输出是什么?
  • 问题是我找不到一些有用的指南来解释从缓冲区读取如何在 android 中工作,除了我需要一个 while 循环来处理与我读取的缓冲区相关的某种条件从。所以在代码的“尝试”中,我需要一个while循环来循环并从缓冲区读取直到它为空

标签: android kotlin


【解决方案1】:

大家好,在与一位同事进行有趣的交谈后,我找到了解决方案,“try”代码中的 while 条件必须是这样的,因为我收到的字符串包含结束字符串符号

 while (!(readMessage.contains(';'))){
        /*my code*/
 }

感谢大家的努力!

【讨论】:

    猜你喜欢
    • 2018-03-14
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多