Android串口通信(基于Tiny6410平台)
友善之臂的Android系统有他们自己编写的一个串口通信程序,网上没有找到他的源代码,而且界面操作不在一个界面,不是很方便,这里我自己写了一个粗糙点的串口通信程序。
- package geekle.lab;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.text.method.ScrollingMovementMethod;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.WindowManager;
- import android.widget.AdapterView;
- import android.widget.ArrayAdapter;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Spinner;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.friendlyarm.AndroidSDK.HardwareControler;
- public class SerialPortActivity extends Activity
- {
- private static final String[] serial_port={"/dev/s3c2410_serial0","/dev/s3c2410_serial1","/dev/s3c2410_serial2"};
- private static final String[] baud_rate={"4800","9600","19200","115200"};
- TextView chooseserialPortView;
- TextView choosebaudRateView;
- TextView commucationView;
- EditText editmsg;
- private Button stopButton;
- private Button sendButton;
- private Spinner choose_serialport;
- private Spinner choose_baudrate;
- private ArrayAdapter<String> serialportAdapter;
- private ArrayAdapter<String> baudrateAdaptera;
- private int fd = 0;
- String thread = "readThread";
- String choosed_serial = "/dev/s3c2410_serial2";
- int choosed_buad = 19200;
- byte[] buf= new byte[300];
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏
- chooseserialPortView = (TextView)findViewById(R.id.choose_serialPort_text);
- choose_serialport = (Spinner)findViewById(R.id.choose_seriaPort_spinner);
- chooseserialPortView = (TextView)findViewById(R.id.choose_baudRate_text);
- choose_baudrate = (Spinner)findViewById(R.id.choose_baudRate_spinner);
- serialportAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,serial_port);//建立下拉控件的适配器
- baudrateAdaptera = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,baud_rate);
- serialportAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
- baudrateAdaptera.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
- choose_serialport.setAdapter(serialportAdapter);//连接控件和适配器
- choose_baudrate.setAdapter(baudrateAdaptera);
- choose_serialport.setSelection(2);
- choose_baudrate.setSelection(2);
- choose_serialport.setOnItemSelectedListener(new Spinner.OnItemSelectedListener()
- {
- public void onItemSelected(AdapterView<?> arg0, View arg1,
- int arg2, long arg3) {
- // TODO Auto-generated method stub
- choosed_serial = serial_port[arg2];
- }
- public void onNothingSelected(AdapterView<?> arg0) {
- // TODO Auto-generated method stub
- }
- });
- choose_baudrate.setOnItemSelectedListener(new Spinner.OnItemSelectedListener()
- {
- public void onItemSelected(AdapterView<?> arg0, View arg1,
- int arg2, long arg3) {
- // TODO Auto-generated method stub
- choosed_buad = Integer.parseInt(baud_rate[arg2]);
- }
- public void onNothingSelected(AdapterView<?> arg0) {
- // TODO Auto-generated method stub
- }
- });
- fd = HardwareControler.openSerialPort(choosed_serial,choosed_buad, 8, 1);//打开串口
- if (fd != -1) {
- Toast.makeText(getApplicationContext(), getResources().getString(R.string.open_serial_success)+choosed_serial, 1).show();
- } else {
- Toast.makeText(this, getResources().getString(R.string.open_fail), 1).show();
- }
- stopButton = (Button)findViewById(R.id.stopButton);
- stopButton.setOnClickListener(new ClickEvent());
- sendButton = (Button)findViewById(R.id.sendButton);//发送消息
- sendButton.setOnClickListener(new OnClickListener() {
- public void onClick(View arg0) {
- // TODO Auto-generated method stub
- HardwareControler.write(fd, editmsg.getText().toString().getBytes());
- commucationView.append(editmsg.getText()+"\n");
- }
- });
- commucationView = (TextView)findViewById(R.id.commucation_window);
- commucationView.setMovementMethod(ScrollingMovementMethod.getInstance()); //让textview实现滚动
- editmsg = (EditText)findViewById(R.id.editmsg);
- new readThread().start();//开始串口的监听线程
- }
- public class ClickEvent implements Button.OnClickListener//退出
- {
- public void onClick(View arg0) {
- // TODO Auto-generated method stub
- android.os.Process.killProcess(android.os.Process.myPid());
- System.exit(0);
- }
- }
- Handler handler = new Handler() {
- public void handleMessage(Message msg) {
- switch (msg.arg1) {
- case 0:
- int len = HardwareControler.read(fd, buf, 300);
- String string = new String(buf, 0, len);
- commucationView.append(string+"\n");
- new readThread().start();//处理完消息后立即开启监听线程
- Log.d(thread,"接收到数据,新线程启动");
- break;
- case 1:
- HardwareControler.setLedState(1, 0);
- new readThread().start();
- // Log.d(thread,"没有数据,新线程启动");
- break;
- default:
- break;
- }
- }
- };
- class readThread extends Thread//读取串口信息线程
- {
- public void run()
- {
- Message msg = new Message();
- HardwareControler.setLedState(0, 0);
- if (HardwareControler.select(fd,5, 0)==1) {
- msg.arg1 = 0;
- }
- else {
- msg.arg1 =1;
- HardwareControler.setLedState(0, 1);
- }
- handler.sendMessage(msg);
- }
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <TextView
- android:id="@+id/choose_serialPort_text"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@+string/chooseserialPort" />
- <Spinner
- android:id="@+id/choose_seriaPort_spinner"
- android:layout_width="wrap_content"
- android:layout_height="40dp" >
- </Spinner>
- <TextView
- android:id="@+id/choose_baudRate_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@+string/choosebaudRate" />
- <Spinner
- android:id="@+id/choose_baudRate_spinner"
- android:layout_width="wrap_content"
- android:layout_height="40dp" >
- </Spinner>
- <TextView
- android:id="@+id/commucation_window"
- android:layout_width="fill_parent"
- android:layout_height="190dp" >
- </TextView>
- <EditText
- android:id="@+id/editmsg"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:hint="edit here" />
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:orientation="horizontal" >
- <Button
- android:id="@+id/sendButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="@+string/send" />
- <Button
- android:id="@+id/stopButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="@string/stopButton" />
- </LinearLayout>
- </LinearLayout>
Android串口通信(基于Tiny6410平台)的更多相关文章
- Android串口通信
前段时间因为工作需要研究了一下android的串口通信,网上有很多讲串口通信的文章,我在做的时候也参考了很多文章,现在就将我学习过程中的一些心得分享给大家,希望可以帮助大家在学习的时候少走一些弯路,有 ...
- Java串口通信--------基于RXTX (附带资源地址)
最近帮老师做了一个小项目,一个牧场公司想用传感器收集一些环境信息,记录到数据库里去,然后加以分析查看.这里面和传感器通信用到了串口通信,我也是接触了一下,把用到的东西分享出来. 准备工作: RXTX: ...
- Android串口通信(Android Studio)
gilhub上已有开源项目: https://github.com/cepr/android-serialport-api 可以直接使用
- Android串口开发
参考资料: https://www.jianshu.com/p/9249ed03e745 GitHUb地址: https://github.com/AIlll/AndroidSerialPort An ...
- 基于FPGA的红外遥控解码与PC串口通信
基于FPGA的红外遥控解码与PC串口通信 zouxy09@qq.com http://blog.csdn.net/zouxy09 这是我的<电子设计EDA>的课程设计作业(呵呵,这个月都拿 ...
- 【毕业设计】基于Android的家校互动平台开发(内含完整代码和所有文档)——爱吖校推(你关注的,我们才推)
☆ 写在前面 之前答应大家的毕业答辩之后把所有文档贡献出来,现在答辩已过,LZ信守承诺,把所有文档开源到了GitHub(这个地址包含所有的代码和文档以及PPT,外层为简单的代码).还望喜欢的朋友们,不 ...
- Android 串口蓝牙通信开发Java版本
Android串口BLE蓝牙通信Java版 0. 导语 Qt on Android 蓝牙通信开发 我们都知道,在物联网中,BLE蓝牙是通信设备的关键设备.在传统的物联网应用中,无线WIFI.蓝牙和Zi ...
- VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
首先,在 vs2008 环境下创建 MFC 运用程序 设置项目名称为 ComTest(这个地方随意命名,根据个人习惯),点击确定后,点击下一步 出现如下界面 选择"基于对话框"模式 ...
- android 串口开发第二篇:利用jni实现android和串口通信
一:串口通信简介 由于串口开发涉及到jni,所以开发环境需要支持ndk开发,如果未配置ndk配置的朋友,或者对jni不熟悉的朋友,请查看上一篇文章,android 串口开发第一篇:搭建ndk开发环境以 ...
随机推荐
- Javascript Class
做个记录,javascript 如何创建类? 有早期的,有原型的,有构造函数的 // early javascript object var o = {}; o.color = 'red'; o.sh ...
- angularjs中的directive
正在初学angularjs中,在网上看到一篇详细讲解directive指令的文章,于是就记录在这里和大家一起分享 angular.module('docsTransclusionExample', [ ...
- Java 类成员的初始化顺序
Java 类成员的初始化顺序 前言:开发中碰到一个Java文件中有很多的成员变量,包括静态和非静态的,还有很多的初始化方法,很好奇这些成员的初始化顺序,在这里作个研究. 1 无继承情况下的Jav ...
- Java通过代理类实现数据库DAO操作
下面的所有代码示例都取自李兴华的<Java Web开发实战经典>的随书源码,因为觉得设计得很好,所以将代码摘录下来作成笔记. 首先,我们在一个java文件中定义要存储的结构类型: impo ...
- ASP.NET MVC局部验证及相关问题
在上一篇“asp.net mvc常用的数据注解和验证以及entity framework数据映射”话题中,有的博友提到 ‘“同一个实体在3-4个地方会发生修改,每个修改需要验证的方式都不一样,后端就不 ...
- MyEclipse中新建html5中文乱码
近期刚开始入门html5 和 javascript 用MyEclipse2104创建html5时,遇到浏览器显示中文乱码的问题 [MyEclipse中设置的html5,jsp编码都采用的UTF-8] ...
- js中隐式类型转换测试
javascript数据类型: 使用typeof可以返回的数据类型有六种 "number" , "string" , "boolean" ...
- 如何判断PHP 是ts还是nts版的
通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版.
- (三)开始在OJ上添加签到功能
在了解完OJ文件下的各个文件夹的主要作用后,我们开始往里面添加东西(其实只要知道各文件夹是干什么的后,添加东西也变得非常简单了) 一 在数据库中添加对应功能的字段. 我们这个学期才刚开数据库这门课,所 ...
- mysql命令语句来去除掉字段中空格字符的方法
mysql有什么办法批量去掉某个字段字符中的空格?不仅是字符串前后的空格,还包含字符串中间的空格,答案是 replace,使用mysql自带的 replace 函数,另外还有个 trim 函数. ...