CH34xUARTDriver for android usb write 将响应高达 85 十六进制字符串

问题描述

我正在使用 USB 连接在 android 中进行串行通信项目。 CH340 电缆的响应在 Modbus 上是正确的,但是当我将它与 android 连接时,它只显示 85 个字符串,而它应该返回 100 个字符串。 我的设置是: Android 设备:Lenovo M10 Tab 另一端串口设备:秦恒CH340

  1. 要写入的 USB 请求字符串:

    var string ="1,3,49,40,20,27"
    val spliteString: Array<String> = string.split(",").toTypedArray()
    val dataByte = arrayOfNulls<Byte>(spliteString.size)
    for (i in spliteString.indices) {
        dataByte[i] = spliteString[i].toInt(10).toByte()
    }
    val bytesArray = ByteArray(dataByte.size)
    var i = 0
    for (b in dataByte) bytesArray[i++] = b!!
    return bytesArray 

然后调用write data方法,我在U盘上写的内容如下:

MyApp.driver.WriteData(bytesArray,bytesArray.size)
  1. 使用以下方法处理连接

     if (MyApp.driver.SetConfig(19200,8.toByte(),2.toByte(),0.toByte(),0.toByte())) {
                    Toast.makeText(this@MainActivity,"Config successfully",Toast.LENGTH_SHORT).show()
                }

来自我正在写入的串行设备的响应:


    handler = object : Handler(Looper.myLooper()!!) {
                override fun handleMessage(msg: Message) {
                    readText!!.append(msg.obj as String)
                }
            }

现在 Modbus 中的响应显示 100 个字符,而在我的 android 中,它显示 85 个字符。

对于连接,我尝试了以下库

https://github.com/felHR85/UsbSerial

但这行不通,当我在 USB 串行端口上写入内容时,响应中没有任何返回。

然后我使用了 http://www.wch.cn/download/CH341SER_ANDROID_ZIP.html 的 CH34xUARTDriver 但它只给了我一个静态的 85 个字符串,而不是应该从硬件接收的字符串。

感谢任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)