Giter VIP home page Giter VIP logo

Comments (5)

vip404 avatar vip404 commented on August 22, 2024 1

感谢!的确是模拟器问题,在真实机器上不会有同样的问题;哈哈哈,同样不是搞安卓的,当时也花了很长时间去尝试解决这个问题,甚至换库都是解决不了,最后发现真实机器上正常就没继续琢磨了,再次感谢!

from modbus4android.

autukill avatar autukill commented on August 22, 2024

这个问题, 我研究了两周, 花了很多精力. 我本身不搞 android, 但项目遇到 andrid modbus rtu. 根据 pc 端 modbus 经验, 在 android 不会有什么问题. 但还是花了很多时间, 走了很多弯路, 没有从串口出发, 尝试了 Xamarin Android 来搞, 发现也卡在读多个保持寄存器

全网搜了下, 没有解决方案:

  1. 这个文章的评论有涉及, 提到使用 Genymotion. https://blog.csdn.net/Shirley0207/article/details/100544726
  2. stackoverflow 没有人回复

先说结论: 排除 root\权限 等各种因素, 问题出在 Android 模拟器, 必须使用其他模拟器, 我电脑只有雷电模拟器才正常

解决经过
1.Android Studio的模拟器
直接通过 adb shell 向 ModSim32 读多个保持寄存器
echo -en "\x01\x03\x00\x00\x00\x64\x44\x21" > /dev/ttyS1
执行这个命令, android emulator 直接卡死了, adb shell 连跳几个错误后崩溃:
detected a hanging thread 'QEMU2 main loop'

如果读一个保持寄存器, 是能够正常取值的. 之后的测试都可以使用以上这条命令.

2.尝试 Genymotion
他用的是 virtualbox, 我从 Android 5 到 Android 9 都试了边. 要么无法启动卡在 booting, 要么也是串口崩溃.
比如引导卡在: Running second stage...
比如引导卡在: cannot find '/system/bin/vinput_seamless', disabling 'vinput_seamless'

Genymotion 兼容性不好

3.雷电模拟器
安装Genymotion时, 附带给我安装了 VirtualBox. 联想到以前打游戏安装了雷电, 这些模拟器也用 virtualbox. 运行并查看雷电模拟器的设置界面, 没有找到串口配置. 就到雷电安装路径下找虚拟机文件, 发现了\LDPlayer64\vms\leidian0\leidian.vbox. VirtualBox 可以编辑这个文件 (vbox是xml格式), 串口配置好之后, 再把 leidian.vbox 修改为只读文件. 因为雷电模拟器启动时候会覆盖这个文件.
可以直接文本编辑加上串口配置:
<Port slot="1" enabled="true" IOBase="0x2f8" IRQ="3" path="COM3" hostMode="HostDevice"/>
表示: VirtualBox 开启端口2, 对应本机 COM3, 虚拟机默认对应ttyS1. 可以通过虚拟串口驱动看到, 雷电模拟器使用[9600-N-1]

from modbus4android.

lintianlin avatar lintianlin commented on August 22, 2024

这个问题, 我研究了两周, 花了很多精力. 我本身不搞 android, 但项目遇到 andrid modbus rtu. 根据 pc 端 modbus 经验, 在 android 不会有什么问题. 但还是花了很多时间, 走了很多弯路, 没有从串口出发, 尝试了 Xamarin Android 来搞, 发现也卡在读多个保持寄存器

全网搜了下, 没有解决方案:

  1. 这个文章的评论有涉及, 提到使用 Genymotion. https://blog.csdn.net/Shirley0207/article/details/100544726
  2. stackoverflow 没有人回复

先说结论: 排除 root\权限 等各种因素, 问题出在 Android 模拟器, 必须使用其他模拟器, 我电脑只有雷电模拟器才正常

解决经过 1.Android Studio的模拟器 直接通过 adb shell 向 ModSim32 读多个保持寄存器 echo -en "\x01\x03\x00\x00\x00\x64\x44\x21" > /dev/ttyS1 执行这个命令, android emulator 直接卡死了, adb shell 连跳几个错误后崩溃: detected a hanging thread 'QEMU2 main loop'

如果读一个保持寄存器, 是能够正常取值的. 之后的测试都可以使用以上这条命令.

2.尝试 Genymotion 他用的是 virtualbox, 我从 Android 5 到 Android 9 都试了边. 要么无法启动卡在 booting, 要么也是串口崩溃. 比如引导卡在: Running second stage... 比如引导卡在: cannot find '/system/bin/vinput_seamless', disabling 'vinput_seamless'

Genymotion 兼容性不好

3.雷电模拟器 安装Genymotion时, 附带给我安装了 VirtualBox. 联想到以前打游戏安装了雷电, 这些模拟器也用 virtualbox. 运行并查看雷电模拟器的设置界面, 没有找到串口配置. 就到雷电安装路径下找虚拟机文件, 发现了\LDPlayer64\vms\leidian0\leidian.vbox. VirtualBox 可以编辑这个文件 (vbox是xml格式), 串口配置好之后, 再把 leidian.vbox 修改为只读文件. 因为雷电模拟器启动时候会覆盖这个文件. 可以直接文本编辑加上串口配置: <Port slot="1" enabled="true" IOBase="0x2f8" IRQ="3" path="COM3" hostMode="HostDevice"/> 表示: VirtualBox 开启端口2, 对应本机 COM3, 虚拟机默认对应ttyS1. 可以通过虚拟串口驱动看到, 雷电模拟器使用[9600-N-1]

你好,请教一下,为什么我是用雷电模拟器以后,点击“连接”按钮没反应呢,我的串口已经绑定成功了,在虚拟串口工具上已经可以看到,雷电模拟器对应的[9600-N-1]。我是用系统自带的模拟器是可以连接成功,也能读取单个寄存器,只是在读取多个寄存器的时候也会出现死机的情况。但是我用雷电模拟器按照你说的那样配置以后,进入应用出现了“连接”按钮点击没反应的情况。

from modbus4android.

lintianlin avatar lintianlin commented on August 22, 2024

这个问题, 我研究了两周, 花了很多精力. 我本身不搞 android, 但项目遇到 andrid modbus rtu. 根据 pc 端 modbus 经验, 在 android 不会有什么问题. 但还是花了很多时间, 走了很多弯路, 没有从串口出发, 尝试了 Xamarin Android 来搞, 发现也卡在读多个保持寄存器
全网搜了下, 没有解决方案:

  1. 这个文章的评论有涉及, 提到使用 Genymotion. https://blog.csdn.net/Shirley0207/article/details/100544726
  2. stackoverflow 没有人回复

先说结论: 排除 root\权限 等各种因素, 问题出在 Android 模拟器, 必须使用其他模拟器, 我电脑只有雷电模拟器才正常
解决经过 1.Android Studio的模拟器 直接通过 adb shell 向 ModSim32 读多个保持寄存器 echo -en "\x01\x03\x00\x00\x00\x64\x44\x21" > /dev/ttyS1 执行这个命令, android emulator 直接卡死了, adb shell 连跳几个错误后崩溃: detected a hanging thread 'QEMU2 main loop'
如果读一个保持寄存器, 是能够正常取值的. 之后的测试都可以使用以上这条命令.
2.尝试 Genymotion 他用的是 virtualbox, 我从 Android 5 到 Android 9 都试了边. 要么无法启动卡在 booting, 要么也是串口崩溃. 比如引导卡在: Running second stage... 比如引导卡在: cannot find '/system/bin/vinput_seamless', disabling 'vinput_seamless'
Genymotion 兼容性不好
3.雷电模拟器 安装Genymotion时, 附带给我安装了 VirtualBox. 联想到以前打游戏安装了雷电, 这些模拟器也用 virtualbox. 运行并查看雷电模拟器的设置界面, 没有找到串口配置. 就到雷电安装路径下找虚拟机文件, 发现了\LDPlayer64\vms\leidian0\leidian.vbox. VirtualBox 可以编辑这个文件 (vbox是xml格式), 串口配置好之后, 再把 leidian.vbox 修改为只读文件. 因为雷电模拟器启动时候会覆盖这个文件. 可以直接文本编辑加上串口配置: <Port slot="1" enabled="true" IOBase="0x2f8" IRQ="3" path="COM3" hostMode="HostDevice"/> 表示: VirtualBox 开启端口2, 对应本机 COM3, 虚拟机默认对应ttyS1. 可以通过虚拟串口驱动看到, 雷电模拟器使用[9600-N-1]

你好,请教一下,为什么我是用雷电模拟器以后,点击“连接”按钮没反应呢,我的串口已经绑定成功了,在虚拟串口工具上已经可以看到,雷电模拟器对应的[9600-N-1]。我是用系统自带的模拟器是可以连接成功,也能读取单个寄存器,只是在读取多个寄存器的时候也会出现死机的情况。但是我用雷电模拟器按照你说的那样配置以后,进入应用出现了“连接”按钮点击没反应的情况。

打断点发现,初始化的时候,在ModbusWorker.java文件的init(final ModbusParam param, final ModbusCallback callback)方法中正常流程是走onNext(ModbusMaster modbusMaster)方法,但是在安装在雷电模拟器中点击“连接”按钮后,走了void onSubscribe(Disposable d)方法。。。

from modbus4android.

autukill avatar autukill commented on August 22, 2024

@lintianlin
你先确保通过 adb 发送是正常的:

直接通过 adb shell 向 ModSim32 读多个保持寄存器
echo -en "\x01\x03\x00\x00\x00\x64\x44\x21" > /dev/ttyS1

from modbus4android.

Related Issues (17)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.