当前位置: 代码迷 >> Android >> 亲善之臂Tiny210 android 串口/pwm/ADC/LED调用 .so文件
  详细解决方案

亲善之臂Tiny210 android 串口/pwm/ADC/LED调用 .so文件

热度:718   发布时间:2016-05-01 10:02:04.0
友善之臂Tiny210 android 串口/pwm/ADC/LED调用 .so文件

1.TextView 滚动拉动

2.byte 转 Strings

3. Thread

4.Handle

?

<?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/receiveTextView"
??????? android:layout_width="match_parent"
??????? android:layout_height="wrap_content"
??????? android:text="Title" />
??? <LinearLayout
??????? android:layout_width="wrap_content"
??????? android:layout_height="wrap_content"
??????? android:orientation="horizontal" >

??????? <Button
??????????? android:id="@+id/sendSerial"
??????????? style="?android:attr/buttonStyleSmall"
??????????? android:layout_width="wrap_content"
??????????? android:layout_height="wrap_content"
??????????? android:text="Send" />

??????? <Button
??????????? android:id="@+id/clearButton"
??????????? style="?android:attr/buttonStyleSmall"
??????????? android:layout_width="wrap_content"
??????????? android:layout_height="wrap_content"
??????????? android:text="Clear" />

??????? <Button
??????????? android:id="@+id/openSerial"
??????????? style="?android:attr/buttonStyleSmall"
??????????? android:layout_width="wrap_content"
??????????? android:layout_height="wrap_content"
??????????? android:text="OPEN" />

??????? <Button
??????????? android:id="@+id/closeSerial"
??????????? style="?android:attr/buttonStyleSmall"
??????????? android:layout_width="wrap_content"
??????????? android:layout_height="wrap_content"
??????????? android:text="Close" />
??? </LinearLayout>
???
???
??? <EditText
??????? android:id="@+id/sendEditText"
??????? android:layout_width="match_parent"
??????? android:layout_height="wrap_content"
??????? android:ems="10" >
??? </EditText>

???
??? <ScrollView
??????? android:id="@+id/scrollView1"
??????? android:layout_width="match_parent"
??????? android:layout_height="wrap_content" >

??????? <LinearLayout
??????????? android:layout_width="match_parent"
??????????? android:layout_height="match_parent"
??????????? android:orientation="vertical" >
?????????? <TextView
??????? android:id="@+id/showTextView"
??????? android:layout_width="match_parent"
??????? android:layout_height="wrap_content"
??????? android:text=" "
??????? android:textAppearance="?android:attr/textAppearanceLarge" />
???????????
??????? </LinearLayout>
??? </ScrollView>

</LinearLayout>

?

?

package com.friendlyarm.LEDDemo;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.EditText;
import android.widget.Toast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.widget.Button;
import java.util.Arrays;
import android.widget.TextView;

import com.friendlyarm.AndroidSDK.HardwareControler;

public class serial extends Activity{
???? private TextView fdText;
???? private TextView showText;
???? private EditText sendEditText;

???? private Button closeSerial;
???? private Button sendSerial;
???? private Button openSerial,clearShow;
???? private int fd;

???? protected static final int SHOWDATA = 0x1234;
??protected static final int SENDOK = 0x1235;
??public Handler mHandler;
??
??private boolean threadDisable=false;
??String recdata;
??
/**
*接收函数
*/

?? @Override
?? public void onCreate(Bundle savedInstanceState)
?? {
?????????? super.onCreate(savedInstanceState);
?????????? setContentView(R.layout.serial);
??????????
?????????? fdText=(TextView) findViewById(R.id.receiveTextView);
?????????? showText=(TextView) findViewById(R.id.showTextView);
??????????
?????????? sendEditText=(EditText) findViewById(R.id.sendEditText);
?????????? closeSerial = (Button) findViewById(R.id.closeSerial);
?????????? sendSerial = (Button) findViewById(R.id.sendSerial);
?????????? openSerial = (Button) findViewById(R.id.openSerial);
?????????? clearShow = (Button) findViewById(R.id.clearButton);
??????????
?????? closeSerial.setOnClickListener(new Button.OnClickListener(){
?????????? @Override
?????????? public void onClick(View v) {
??????????? //TODO Auto-generated method stub
??????????? HardwareControler.close(fd);
??????????? fdText.setText("关闭串口");
??????????? openSerial.setEnabled(true);
??????????? threadDisable = true;
?????????? }
?????? });
?????? openSerial.setOnClickListener(new Button.OnClickListener(){
?????????? @Override
?????????? public void onClick(View v) {
??????????? //TODO Auto-generated method stub
??????? ?fd=HardwareControler.openSerialPort("/dev/s3c2410_serial3",115200,8,1);
??????????? if(fd !=-1)
???????? ??? Toast.makeText(serial.this,"OPEN SUCCESS", Toast.LENGTH_SHORT).show();
??????????? else
???????? ??? Toast.makeText(serial.this,"OPEN FAIL```", Toast.LENGTH_SHORT).show();
??????????? fdText.setText(Integer.toString(fd));
??????????? fdText.setText(fdText.getText() + "打开线程");???????????
??????????? openSerial.setEnabled(false);

??????????? new Thread(new Runnable() {
?????? @Override
?????? public void run() {
??????? while (!threadDisable) {
??????? ?
???????? try {
????????? Thread.sleep(1000);
???????? } catch (InterruptedException e) {
????????? e.printStackTrace();
???????? }
?????
???????? int m=HardwareControler.select(fd,0,0);
?????? if(m==1)
????????????? {
???????????????? byte[] buf =new byte[1024];
???????????????? try {
????????????????? Thread.sleep(10);
???????????????? } catch(InterruptedException e) {
????????????????? //TODO Auto-generated catch block
????????????????? e.printStackTrace();
???????????????? }
????????????????
?????????????? int n = HardwareControler.read(fd, buf, 1024);
??????????????? String ss = new String(buf,0,n);//将bytes转为 String
??????????????? Message s = new Message();//定义一个message的变量m???????
????????????????? s.what = serial.SHOWDATA;//消息的标记GUINOTIFIER在前面定义的
????????????????? s.obj =ss; //将要传送的数据传递给 m.obj?????????????????????
????????????????? serial.this.mHandler.sendMessage(s);//传送消息
??????????????? } ??????
??????? }
?????? }
????? }).start();

?????????? }
?????? });
?????? /**
??????? * 发送按钮
??????? */
?????? sendSerial.setOnClickListener(new Button.OnClickListener(){
????????? public void onClick(View v){
????????????? SendSerial();
????????? }
?????? });
??????
?????? clearShow.setOnClickListener(new Button.OnClickListener(){
?????????? public void onClick(View v){
??????? ??? showText.setText("");
?????????? }
??????? });
??????
???? //创建handler
??mHandler = new Handler() {
???????????? public void handleMessage(Message msg) {
???????????????? switch (msg.what) {//得到Handle的通知了 这个时候你可以做相应的操作
???????????????????? case serial.SHOWDATA://tcp_server是Activity的类名?
???????????????????? //?receivedata_tv.setText("");?//清空textView???????????????????
???????????????????? //?recv_tv.setText(msg.obj.toString());//设置textView显示内容 每次都清除上次的显示
???????????????????? ?showText.setMovementMethod(new ScrollingMovementMethod());
???????????????????? ?showText.append(""+ msg.obj.toString());//设置textView显示内容 下一行接着显示
???????????????????????? break;
?????????????????? //? case serial.SENDOK:
???????????????????? ?//.setText("");
???????????????? }
???????????????? super.handleMessage(msg);
???????????? }
???????? };
??? }
??
?? public void SendSerial(){
?????? HardwareControler.write(fd,sendEditText.getText().toString().getBytes());
?????? sendEditText.setText("");
??? };
}
??

package com.friendlyarm.AndroidSDK;
import android.util.Log;

public class HardwareControler
{
?/* Serial Port */
?static public native int openSerialPort( String devName, long baud, int dataBits, int stopBits );
?
?/* LED */
?static public native int setLedState( int ledID, int ledState );
???
??? /* PWM */
?static public native int PWMPlay(int frequency);
?static public native int PWMStop();
???
??? /* ADC */
?static public native int readADC();
?
?/* I2C */
?static public native int openI2CDevice();
?static public native int writeByteDataToI2C(int fd, int pos, byte byteData);
?static public native int readByteDataFromI2C(int fd, int pos);
?
?/* 通用接口 */
?static public native int write(int fd, byte[] data);
?static public native int read(int fd, byte[] buf, int len);
?static public native int select(int fd, int sec, int usec);
?static public native void close(int fd);
???
??? static {
??????? try {
??????? ?System.loadLibrary("friendlyarm-hardware");
??????? } catch (UnsatisfiedLinkError e) {
??????????? Log.d("HardwareControler", "libfriendlyarm-hardware library not found!");
??????? }
??? }
}

?

?

  相关解决方案