大家好,我现在根据友善给的SO库写了个android串口读写程序,为什么可以向PC发送数据,不能从PC向开发板发送呢(开发板有时候会接受到,但数据几乎是断断续续的),我不知道错在哪呢,有人说要改init.rc,但是在最后一样加一行chmod 777 serialport0重启开发板没啥效果啊,希望这个帖子大家看看一起解决了,我把代码贴上来
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.friendlyarm.AndroidSDK.HardwareControler;
public class AnSerialPortActivity extends Activity {
private Button send;
private Button clear;
EditText sendEditText;
TextView readTextView;
private int fd;
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);
readTextView=(TextView)findViewById(R.id.text);
sendEditText=(EditText)findViewById(R.id.editText);
send=(Button)findViewById(R.id.send);
clear=(Button)findViewById(R.id.clear);
fd = HardwareControler.openSerialPort("/dev/s3c2410_serial2",9600, 8, 1);//打开串口
if (fd != -1) {
Toast.makeText(this, "success", 2000).show();
} else {
Toast.makeText(this, "wrong", 2000).show();
}
readTextView.setMovementMethod(ScrollingMovementMethod.getInstance());
new readThread().start();
send.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
HardwareControler.write(fd, sendEditText.getText().toString().getBytes());
}
});
clear.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sendEditText.setText("");
}
});
}
Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.arg1) {
case 0:
int len = HardwareControler.read(fd, buf, 30);
String string = new String(buf, 0, len);
//readTextView.setText(string.toCharArray(),0,len);
readTextView.append(string+"/n");
new readThread().start();//处理完消息后立即开启监听线程
break;
case 1:
HardwareControler.setLedState(1, 0);
new readThread().start();
break;
default:
break;
}
}
};
class readThread extends Thread//读取串口信息线程
{
public void run()
{
Message msg = new Message();
if (HardwareControler.select(fd,5,0)==1) {
msg.arg1 = 0;
HardwareControler.setLedState(0, 1);
}
else {
msg.arg1 =1;
HardwareControler.setLedState(1, 1);
}
handler.sendMessage(msg);
}
}
}