⑴ android如何读取串口数据
代码如下:
import com.friendlyarm.AndroidSDK.HardwareControler;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
public class MapGuider_Activity extends Activity{
private int serial_fd=0;
private byte[] serial_RevBuf=new byte[100];
private byte[] serial_SendBuf="fsjajd".getBytes();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.mapguider);
serial_fd=HardwareControler.openSerialPort("/dev/s3c2410_serial1", 115200, 8, 1);
if(serial_fd!=-1)
{
System.out.println("打开串口成功");
HardwareControler.write(serial_fd, serial_SendBuf);
lac_handler.post(RevicePosDataThread);
}
else
{
System.out.println("指定的串口不存在或在其它进程中已被打开");
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
HardwareControler.close(serial_fd);
System.out.println("关闭串口");
lac_handler.removeCallbacks(RevicePosDataThread);
super.onDestroy();
}
Handler lac_handler =new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
}
};
Runnable RevicePosDataThread =new Runnable()
{
int err=0;
String s;
public void run() {
// TODO Auto-generated method stub
while(true)
{
//Looper.prepare();
err=HardwareControler.select(serial_fd, 1, 0);
if(err==1)//有数据可读
{
HardwareControler.read(serial_fd, serial_RevBuf, 10);
s=new String(serial_RevBuf);
System.out.println("接收到串口数据"+s);
}
else if(err==0) //无数据可读
{
System.out.println("没有接收到串口数据");
}
else //出错
{
System.out.println("接收到串口数据出错");
}
try {
Thread.sleep(2);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
}
⑵ windows下android模拟器,主机(无串口)如何通过usb转串口线来采集板子数据
看网上有人说的:如果要启动名字为myavd的虚拟机,则执行以下命令:emulator
@myavd
-qemu
-serial
COM1
启动后,在dev里面会有ttyS0,ttyS1,ttyS2。经测试为ttyS2.如果用程序打开串口,提示没有读写权限。应该运行:adb
shell#cd
dev#chmod
777
ttyS2怎么启动后,在dev里面会有ttyS0,ttyS1,ttyS2。这三个是在哪里看到的啊,还望高人指点
⑶ 安卓电脑模拟器如何控制计算机串口
可能是你的电脑设置吧
usb串口显示关了
或是你的手机系统出问题了
先把电脑的设置检查一遍
再把手机格机看看实在不行就
去维修点看看吧
⑷ 请问一下怎么在安卓模拟器里面查看我是否加载了pc的串口呢在线等,求各位大牛解答,拜托拜托。。。。
Android开发,模拟器是可以使用PC的串口的,只是我们需要在命令行启动模拟器,并且指定要挂载的串口,命令格式如下: emulator -qemu -serial COM1 如果要启动名字为android2.1的虚拟机,则执行以下命令: emulator @android15r1 -qemu -serial COM1 启动后,在dev里面会有ttyS0,ttyS1,ttyS2。
其中ttyS2就是挂载上来的串口COM1。
至于ttyS0/ttyS1,不清楚具体是什么,经测试,也有数据,我猜测是鼠标的USB接口。 如果用程序打开串口,可能会提示没有读写权限。
应该在命令提示符下用linux命令赋予读写的权限: 进入shell:adb shell
进入设备目录:#cd dev 修改权限:#chmod 777 ttyS2!
⑸ windows下android模拟器,主机(无串口)如何通过usb转串口线来采集板子数据
看网上有人说的:如果要启动名字为myavd的虚拟机,则执行以下命令:emulator
@myavd
-qemu
-serial
COM1
启动后,在dev里面会有ttyS0,ttyS1,ttyS2。经测试为ttyS2.如果用程序打开串口,提示没有读写权限。应该运行:adb
shell#cd
dev#chmod
777
ttyS2怎么启动后,在dev里面会有ttyS0,ttyS1,ttyS2。这三个是在哪里看到的啊,还望高人指点
⑹ android模拟器怎么进行串口测试
推荐下载一个那个芯片的datasheet
我买的看完视频教程等等还是感觉不系统就买了一本书
看了一下结果发现完全翻译的芯片的datasheet
白白浪费了我五十多块大洋
最好不要完全选择一致的板子对应的书
把你的书上的代码经过思考再移植到你的板子上才有效果
看完手册以后 你可以找几本介绍实践应用的书
⑺ Android平台到底能不能通过串口发送AT指令呢,急!!!
AT命令(Attention)在手机中,用于对modem(也就是移动模块)通过串口命令进行操作,处理与语音电话、短信和数据。
关于AT命令:
Android系统与AT命令
对于智能手机,AP和BP分离的情况,在AP上的系统通过串口和BP通信是个不错方式。在Android的源码中有一个内部包com.android.internal.telephony中有对AT命令的封装和解析,但这种internal的包开发者不能调用的SDK部分,可以用来封装ROM。这说明Android对AT command的方式是支持的。
对于Android如何调用AT command
用root登录命令行,直接对串口进行操作,如echo -e "AT " > /dev/smd0
具体的串口,不同设备会有不同,甚至不一定会提供。这种方式,开发者是可以调用的,通过Runtime.exec直接执行命令行命令,但要求是root,例如echo -e "ATD123456789; " > /dev/smd0,拨打123456789的号码。
目前最新的AT命令标准发布与2014.6.27,似乎还活得挺滋润的。但是给出的keywords是UMTS, GSM, command, terminal, LTE这说明CDMA确实很可能不是采用AT命令的方式。
⑻ android串口消息
android串口消息连接的方法为:
1.模拟器可以使用PC的串口。
启动模拟器并加载PC串口 命令如下。
运行 emulator @模拟器名称 -qmu -serial COM1。
2.查看串口是否被加载。
启动后使用 adb shell 命令打开命令行
cd dev 查看会发现ttyS0 ttyS1 ttyS2,其他ttyS2 就是我们加载上来的串口COM1
3.修改权限
chmod 777 ttyS2
现在我们可以开发串口程序了。
4.串口程序实例
下载libserial_port.so ,放入libs/armeabi 目录,可以自己创建此目录
libserial_port.so 下载地址:
http://code.google.com/p/android-serialport-api/
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.util.Log;
public class SerialPort {
private static final String TAG = "SerialPort";
private FileDescriptor mFd;
private FileInputStream mFileInputStream;
private FileOutputStream mFileOutputStream;
public SerialPort(File device, int baudrate) throws SecurityException, IOException {
if (!device.canRead() || !device.canWrite()) {
try {
Process su;
su = Runtime.getRuntime().exec("/system/bin/su");
String cmd = "chmod 666 " + device.getAbsolutePath() + "n"
+ "exitn";
su.getOutputStream().write(cmd.getBytes());
if ((su.waitFor() != 0) || !device.canRead()
|| !device.canWrite()) {
throw new SecurityException();
}
} catch (Exception e) {
e.printStackTrace();
throw new SecurityException();
}
}
mFd = open(device.getAbsolutePath(), baudrate);
if (mFd == null) {
Log.e(TAG, "native open returns null");
throw new IOException();
}
mFileInputStream = new FileInputStream(mFd);
mFileOutputStream = new FileOutputStream(mFd);
}
public InputStream getInputStream() {
return mFileInputStream;
}
public OutputStream getOutputStream() {
return mFileOutputStream;
}
//JNI
private native static FileDescriptor open(String path, int baudrate);
public native void close();
static {
System.loadLibrary("serial_port");
}
}
####################################
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class PrintClass {
//输入流
private static InputStream in;
//输出流
private static OutputStream out;
private static final String PORT = "/dev/ttyS2";//串口
private SerialPort serialPort;
private void Connect()
{
try {
serialPort = new SerialPort(new File(PORT), 38400);
in = serialPort.getInputStream();
out = serialPort.getOutputStream();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void CloseSerialPort()
{
try {
out.close();
in.close();
serialPort.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}