『壹』 我想用Android手机与单片机进行串口通信,从而可以控制单片机,该如何实现呢

我们先来说电脑怎么与单片机进行串口通信呢?方案1——“直连”电脑串口,不过中间需要个MAX232之类的电平转换模块;方案2——“直联”电脑USB口,不过中间需要USB转串口模块。好了,手机用哪种方案呢?也是方案2。现在Android手机只要系统在5.0.1以上,一般就支持USB OTG功能了,也就意味着可以支持Android的USB转串口。我是电子硬件工程师,也喜欢Android编程,历时一年多,做了个手机串口软件,分享给你。网络“路人软件”。

『贰』 android虚拟机串口通信

工具:Virtual Serial Port Driver.
用这个工具虚拟出一对串口。
下载地址

2.用串口调试助手,测试串口通信。
3.用这个命令启动虚拟机:emulator @2.2 -scale auto -qemu -serial COM3 &
说明:
2.2:是虚拟机的名称。
COM3是你要选择的串口。
ps:在cmd中使用这个命令有两种方式:1)将安卓的sdk的tools文件夹加入到path环境变量中,2)在安卓的sdk的tools文件夹下打开cmd。
4.虚拟机中测试串口通信用谷歌的一个开源项目:android_serialport_api
5.在虚拟机中运行项目。
说明:运行前要获取设备的权限
1)在cmd中用adb shell命令,进入虚拟机命令行环境。

2)打开dev文件夹:cd dev
3)获取权限:chmod 777 ttyS2

6.谷歌的开源项目不能导入进eclipse,我整理了一下,调通了。

『叁』 android 串口通信丢失数据原因

串口通信数据丢失很大一部分原因是:mscomm的inputlen设置设置有问题;
解决方案:
mscomm的inputlen设置为0吧(读取整个缓冲区),读完一次,清空一次缓冲区试试;
参考如下:
窗体初始化事件中建议将mscomm的这几个属性做如下设置:
mscomm.inbuffersize=8 '接收缓冲区大小
mscomm.rthreshold=4 '促发oncomm事件的字符数
mscomm.inputlen=0 '默认读取整个缓冲区
mscomm.inputmode=cominputmodetext '以文本方式接收
mscomm.inbuffercount=0 '清空缓冲区
oncomm事件中,建议处理完接收数据后用mscomm.inbuffercount=0清空缓冲区