[Android初级]android模拟器中的串口Serialport测试

最近项目要使用到串口通讯,在搭载android系统的主板上监听COM口的数据,这块之前没接触过,我搜索了一下找到一个开源项目:android-serialport-api,通过这个开源项目,我可以轻松的在android应用层监听和请求所需要的设备端口的数据。

使用前,考虑到没有硬件的条件下,我先做个虚拟测试。在电脑上虚拟建立2个com口,(com2<-------->com3),他们是互通的,我要这么做,通过android应用监听com2,接收来自com2的数据并显示,然后再往com2发送数据。那就开始吧!

先使用VSPD创建2个虚拟端口com2、com3,

接着要把serialportapi下载下来,导入到eclipse中,自己建立新的工程项目,把android_serialport_api和android_serialport_api.sample这整个包考到新建的测试项目中,还有把jni和libs都拷过去,相当于把整个项目拷进你自己的项目里!

然后新建一个测试类,用于接收和发送数据的

SerialPortTest

package com.test.serialport;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

import com.example.test1.R;

public class SerialPortTest extends SerialPortActivity implements OnClickListener{

	private static final String Tag = SerialPortTest.class.getSimpleName();
	private Button mSendButton;
	private EditText mSendEdit,mShowEdit;
	private Application app;
	private Handler mHandler;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.serial_test_layout);
		initView();
		mHandler = new Handler(){
			@Override
			public void handleMessage(Message msg) {
				if(msg.what == 1){
					mShowEdit.setText("");
					mShowEdit.setText(new String((byte[]) msg.obj,0,msg.arg1));
				}
			}
		};
	}

	private void initView(){
		mSendButton = (Button) findViewById(R.id.send_button);
		mSendButton.setOnClickListener(this);
		mSendEdit = (EditText) findViewById(R.id.send_edit_text);
		mShowEdit = (EditText) findViewById(R.id.show_edit_text);

	}

	private void sendString(String str){
		if(mOutputStream!=null){
			try {
				mOutputStream.write(str.getBytes("GBK"));
				mOutputStream.flush();
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	@Override
	protected void onDestroy() {
		super.onDestroy();
	}

	@Override
	protected void onDataReceived(byte[] buffer, int size) {
		Message msg = new Message();
		msg.what = 1;
		msg.obj = buffer;
		msg.arg1 = size;
		mHandler.sendMessage(msg);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.send_button:
			sendString(mSendEdit.getText().toString());
			break;
		}
	}
}

还有,在启动android模拟器的时候,必须为其绑定好指定的设备端口,在本文中我监听的是虚拟端口com2,所以你必须这样启动模拟器,命令:emulator @avdname -qemu -serial COM2

在代码中我们要监听的 端口 在目录“/dev/ttS2”

这是简单的测试这个api,具体的使用你可以自己看他提供的dem0.

[Android初级]android模拟器中的串口Serialport测试

时间: 2024-10-28 16:20:21

[Android初级]android模拟器中的串口Serialport测试的相关文章

[Android初级]android单元测试之Activity单独测试

有种情况,我们开发人员可能要对已经完成的应用做维护,其中某个界面可能存在bug,所以为了测试某个可能存在问题的功能界面而从入口一直开始跳至该界面,这个情况,我们测试人员可以自己不停的跳过一些非测试目的界面,浪费了时间.这里有个小的方式,是android提供的系统测试方案,可以来试试,今天我试了试Activity的单独测试方式,感觉还不错,在这里分享给各位. 首先模拟一个我们要被测的项目:TestActivity和主要测试的登陆界面 需要测试的功能是,模拟用户输入,并登陆操作,以及重置功能的操作验

[Android初级]android与netty4初体验

博主曾经对netty4的helloword很感兴趣,也曾单纯的写过一个小小的聊天室java代码,现在重新来看看,浏览了这位牛人的博客 点击去看看 我觉得受益匪浅,故拿来分享. 这次是在android上使用netty作为客户端,来与服务端相互通讯的小事例,纯粹的helloworld,效果就是在android程序中发送一个消息到服务端,然后服务端也回一个消息给客户端,很简单的demo,.大牛看了可不要吐槽啊! 1.demo结构 2.服务端代码: Server.java package org.jan

android模拟器中如何安装apk

1.在Eclipse中启动模拟器. 2.打开doc命名窗口,转到你android sdk安装目录中的platform-tools下,如:E:\android\android-sdks\platform-tools. 3.将要安装的apk拷到platform-tools所在的目录下,然后在doc下输入: adb install xxxxxx.apk 稍等片刻,提示success

【android】在eclipse中查看genymotion模拟器的sd卡目录

如果用google自带模拟器或者真机调试时,sd卡目录是在/mnt/sdcard.这个相信大家都知道. 可是今天用genymotion调试时,发现根本打不开/mnt/sdcard这个目录,当时也没注意看其他信息,以为是adb.eclipse出了什么问题,重启它们后依然打不开,经过一番苦苦挣扎后,发现了一个重要的线索! 哦,原来和我完捉迷藏呢,它指向了另一个目录,接着找,发现: 晕,这孩子挺顽皮的,还是指向了其他目录: 终于找到了,真正的SD卡目录是在/mnt/shell/emulated/0/里

通过adb命令向Android模拟器中导入通讯录联系人

使用adb提供的命令, 可以非常方便地从PC中将通讯录导入android模拟器中. 首先要先准备好固定格式的contacts.vcf文件, 该文件即android中的通讯录存储文件. 格式如下: BEGIN:VCARD VERSION:3.0 N:15200000000;;;; TEL;TYPE=cell:15200000000 END:VCARD BEGIN:VCARD VERSION:3.0 N:15200000011;;;; TEL;TYPE=cell:15200000011 END:VC

向Android模拟器中批量导入通讯录联系人

使用adb命令向Android模拟器中批量导入通讯录联系人的方法: 使用adb提供的命令, 可以非常方便地从PC中将通讯录批量导入android模拟器中. 首先要先准备好固定格式的vcf文件, 该文件即android中的通讯录存储格式文件. 格式如下: BEGIN:VCARD VERSION:2.1 N:;Qiqi;;; FN:Qiqi TEL;HOME:7474 EMAIL;HOME:qiqi.com ADR;HOME:;;Qiqi;;;; END:VCARD BEGIN:VCARD VERS

android模拟器使用PC串口调试

android模拟器使用PC串口调试1.模拟器可以使用PC的串口  启动模拟器并加载PC串口 命令如下:  运行 emulator @模拟器名称 -qemu -serial COM12.查看串口是否被加载  启动后使用 adb shell 命令打开命令行  cd dev 查看会发现ttyS0 ttyS1 ttyS2,其他ttyS2 就是我们加载上来的串口COM13.修改权限 chmod 777 ttyS2   现在我们可以开发串口程序了. 摘自

android编程常见问题-程序在模拟器中不显示

新手编程常见问题: 问题表现:程序运行成功,但是在模拟器中不显示 解决办法:检查项目版本和模拟器版本是否匹配或兼容,如果不匹配,选择和模拟器版本一致 项目版本:右键-Properties-android-target name 和API ,查看版本(图1) 模拟器版本:打开AVD Manager,查看当前使用版本,或者通过Device  查看(图2)           图1           图2

Android初级第二次小结

xml注释: <!-- 注释内容 --> 不能再标签的属性内部注释,在标签之外. 问题: 在控制台中出现: You must restart adb and Eclipse 关掉Eclipse以及模拟器并杀死adb.exe这个进程,重新启动 Activity   界面 四大组件之一 三大要素: 1.声明一个类继承Activity 2.关联布局文件(setContentView()) 3.必须在清单文件中注册 <activity android:name = 包名 + 类名/> 在清