主题 : Android下串口通信程序运行到read()就退出 复制链接 | 浏览器收藏 | 打印
学无止境
级别: 新手上路
UID: 41406
精华: 0
发帖: 38
金钱: 190 两
威望: 38 点
综合积分: 76 分
注册时间: 2011-03-29
最后登录: 2011-10-15
楼主  发表于: 2011-06-09 09:45

 Android下串口通信程序运行到read()就退出

我想通过调试工具向6410板子发数据,可是来数据的时候,程序运行到read()就退出,帮帮我大大们
学无止境
级别: 新手上路
UID: 41406
精华: 0
发帖: 38
金钱: 190 两
威望: 38 点
综合积分: 76 分
注册时间: 2011-03-29
最后登录: 2011-10-15
1楼  发表于: 2011-06-09 09:51
下面是我编的程序 大家帮我看看错误在哪啊  原意是一按button按钮就把数据显示在EditText里的,程序运行的时,当按下按钮,进入线程updateThread后,System.out.println("1234");System.out.println("5678");两句都正确执行了,也在Logcat里打印出来了,但接下来到read程序就退出。。。

public class Read4 extends Activity {
    /** Called when the activity is first created. */
    int fd;
    HardwareControler seri = new HardwareControler();
    Handler handler=new Handler();
    Runnable updateThread=new Runnable(){
      public void run(){
        EditText myView=(EditText)findViewById(R.id.myView);
        int fuck=seri.select(fd,0,100);
        if(fuck==1)
        {
            System.out.println("1234");
            System.out.println("5678");
            byte[] str1=null;
            seri.read(fd, str1, 300);
            String str=str1.toString();
            myView.setText(str);
            handler.postDelayed(updateThread, 3000);
        }
    }
};
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        fd=HardwareControler.openSerialPort("/dev/s3c2410_serial2", 19200, 8, 1);
        Button showButton=(Button)findViewById(R.id.show);
        class showButtonListener implements OnClickListener{
            public void onClick(View v){
                handler.post(updateThread);
            }
        }
        showButton.setOnClickListener(new showButtonListener());
    }
}
级别: 新手上路
UID: 45032
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
综合积分: 22 分
注册时间: 2011-04-30
最后登录: 2011-06-09
2楼  发表于: 2011-06-09 22:17
我也正在研究串口,不会友善驱动有什么问题吧
学无止境
级别: 新手上路
UID: 41406
精华: 0
发帖: 38
金钱: 190 两
威望: 38 点
综合积分: 76 分
注册时间: 2011-03-29
最后登录: 2011-10-15
3楼  发表于: 2011-06-09 22:19

 回 2楼(ynkady) 的帖子

不知道啊 我现在能接收到数据 但全是乱码 不知道怎么搞 为这个问题愁了好久了,还在愁
级别: 新手上路
UID: 45032
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
综合积分: 22 分
注册时间: 2011-04-30
最后登录: 2011-06-09
4楼  发表于: 2011-06-09 22:19
EditText myView=(EditText)findViewById(R.id.myView);
这个语句不用放到线程 的循环里吧,在Oncreate中获取一次就行了。
学无止境
级别: 新手上路
UID: 41406
精华: 0
发帖: 38
金钱: 190 两
威望: 38 点
综合积分: 76 分
注册时间: 2011-03-29
最后登录: 2011-10-15
5楼  发表于: 2011-06-09 22:47

 回 4楼(ynkady) 的帖子

貌似不行 我刚开始就是放在Oncreate里,结果一用myView就出错,后来放在线程里就没事了
学无止境
级别: 新手上路
UID: 41406
精华: 0
发帖: 38
金钱: 190 两
威望: 38 点
综合积分: 76 分
注册时间: 2011-03-29
最后登录: 2011-10-15
6楼  发表于: 2011-06-10 11:38

 回 2楼(ynkady) 的帖子

乱码在好心人的帮助下解决了,代码在我发的另外一个帖子上 你可以去看看http://www.aiothome.net/read.php?tid=12758&page=2#92741