Comments (5)
感谢!的确是模拟器问题,在真实机器上不会有同样的问题;哈哈哈,同样不是搞安卓的,当时也花了很长时间去尝试解决这个问题,甚至换库都是解决不了,最后发现真实机器上正常就没继续琢磨了,再次感谢!
from modbus4android.
这个问题, 我研究了两周, 花了很多精力. 我本身不搞 android, 但项目遇到 andrid modbus rtu. 根据 pc 端 modbus 经验, 在 android 不会有什么问题. 但还是花了很多时间, 走了很多弯路, 没有从串口出发, 尝试了 Xamarin Android 来搞, 发现也卡在读多个保持寄存器
全网搜了下, 没有解决方案:
- 这个文章的评论有涉及, 提到使用 Genymotion. https://blog.csdn.net/Shirley0207/article/details/100544726
- 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.
这个问题, 我研究了两周, 花了很多精力. 我本身不搞 android, 但项目遇到 andrid modbus rtu. 根据 pc 端 modbus 经验, 在 android 不会有什么问题. 但还是花了很多时间, 走了很多弯路, 没有从串口出发, 尝试了 Xamarin Android 来搞, 发现也卡在读多个保持寄存器
全网搜了下, 没有解决方案:
- 这个文章的评论有涉及, 提到使用 Genymotion. https://blog.csdn.net/Shirley0207/article/details/100544726
- 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.
这个问题, 我研究了两周, 花了很多精力. 我本身不搞 android, 但项目遇到 andrid modbus rtu. 根据 pc 端 modbus 经验, 在 android 不会有什么问题. 但还是花了很多时间, 走了很多弯路, 没有从串口出发, 尝试了 Xamarin Android 来搞, 发现也卡在读多个保持寄存器
全网搜了下, 没有解决方案:
- 这个文章的评论有涉及, 提到使用 Genymotion. https://blog.csdn.net/Shirley0207/article/details/100544726
- 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.
@lintianlin
你先确保通过 adb 发送是正常的:
直接通过 adb shell 向 ModSim32 读多个保持寄存器
echo -en "\x01\x03\x00\x00\x00\x64\x44\x21" > /dev/ttyS1
from modbus4android.
Related Issues (17)
- 怎么获取设备的串口号呢? HOT 3
- api 'com.github.licheedev:modbus4j:v3.0.6-alpha1' HOT 1
- 谢兄弟共享,麻烦看下这个是什么错误呢,发送命令报错,但数据已经传过去了
- 谢谢大哥,请问有没有JAR Lib?
- 工程加载aar库失败
- OOM了老哥,求助 HOT 1
- 老哥,读取数据的时候直接TimeOut了。。。 HOT 1
- bindUntilEvent 是来自哪里的?
- 每隔5秒发送一次指令去读取数据,一段时间后IO出错
- 怎么使用rtu传参 HOT 1
- 总是报错怎么解决? HOT 2
- 请教一个问题啊 HOT 16
- Android 7.0 TCP协议下 网络连接失败 请问是什么原因 HOT 2
- 如何获取 modbus返回的错误code ? HOT 8
- 请问串口打开失败是为什么 HOT 5
- 串口连续读数据,数据crc校验也对,经常报crc校验出错,有时候数据收发正常,也会出现超时的情况,错误见下图 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from modbus4android.