`

Android与Arduino的USB通讯实验(1)

 
阅读更多

前端时间Arduino的wifi模块烧了,不能用wifi控制小车了。手上有一个带OTG功能的android手机,想改用通过Android USB和Arduino通讯来控制小车,这样做的好处是Android本身带有wifi,可以通过无线控制,手机上有丰富的传感器(摄像头、加速度、距离等)也可以借用一下,处理器能力更强小车更加智能了。于是开始做技术预研,计划如下:

1、android 获取Arduino发送数据

2、Android向Arduino发送数据

对于第1点arduino向Android发送数据,arduino代码如下

void setup()
{
Serial.begin(9600);
}

void loop()
{
  Serial.print("Hi Usb Host");
  Serial.println(c++);
  delay(1000);
}

 上面的代码设定波特率9600,试了其他几个是乱码。

Android代码如下:

while (true) {
				message = myHandler.obtainMessage();
				message.obj = "\r\n开始传输数据。。。。。" + (c++);
				myHandler.sendMessage(message);
				if (inEndpoint != null) {
					int len = connection.bulkTransfer(inEndpoint, bytes,
							bytes.length, TIMEOUT);
String.valueOf(len));
					message = myHandler.obtainMessage();
					message.obj = "\r\n接收数据长度" + String.valueOf(len);
					myHandler.sendMessage(message);
					if (len > 0) {
						String str = new String(bytes, 0, len);
						message = myHandler.obtainMessage();
						message.obj = "\r\n数据内容:" + str;
						myHandler.sendMessage(message);
					}
				}

 结果是可以收到数据,问题是数据不会一次全部收到,有时会丢数据。

 

 

1
0
分享到:
评论
3 楼 天天煎蛋 2013-01-21  
《特别留意的是读串口时的delay(2)不能删掉,否则串口缓冲区不够时间接受数据。》

别的地方看到的帖子的一句话,我看你的代码里面没有给arduino一个缓冲时间,有可能会丢失数据。
2 楼 tedeum 2012-07-11  
这个没有要求啊,只不过arduino比较方便,用其他USB附件也可以,你也可以用其他单片机试试
1 楼 qinpengtaiyuan 2012-07-10  
您好!我是一名学生,最近也在研究这个问题,即: Android 设备通过 USB 线连接外部设备并进行通信,现在有一个问题想要请教:

            Arduino 是必须使用的吗?即,必须使用 Arduino 作为中间设备吗?

希望老鸟不吝赐教!

相关推荐

Global site tag (gtag.js) - Google Analytics