小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 8931|回复: 2

怎么写Android socket通信时不能从输入流获得数据??

[复制链接]
发表于 2012-8-28 20:10:22 | 显示全部楼层 |阅读模式
   请教各位大侠,我最近在做Android socket通信方面,是想双向传输数据,代码如下:
public class MessageActivity extends Activity {
    /** Called when the activity is first created. */
        private static final String        TAG        = "MessageActivity";
        private Socket socket ;
        static PrintWriter mPrintWriter ;
        static BufferedReader br        ;
        private Thread mThread=null;
        private String msg="";
        public TextView textview2;
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button button2 = (Button) findViewById(R.id.button2);//设置按钮,按下后给服务器发送数据

         textview2=(TextView)findViewById(R.id.textview2);//显示从服务器传来的数据

        try
                {  
                        socket=new Socket("10.10.100.254",8899);
                    br =new BufferedReader(new InputStreamReader(socket.getInputStream()));  //获得输出流
                    mPrintWriter=new PrintWriter(socket.getOutputStream(),true);  //获得输入流
                }   
        catch(Exception e)
                {
                        Log.e(TAG,e.toString());
                }

        button2.setOnTouchListener(new Button.OnTouchListener()   //给button2 设置监听
                {
                                public boolean onTouch(View v, MotionEvent event) {
                                        int action = event.getAction();
                                        switch(action)
                                        {
                                        case MotionEvent.ACTION_DOWN:
                                                    mPrintWriter.print("f");
                                                    mPrintWriter.print("\r");
                                                    mPrintWriter.print("\n");//前进         
                                                    mPrintWriter.flush();                                    
                                        break;
                                        case MotionEvent.ACTION_UP:
                                                    mPrintWriter.print("0");     
                                                    mPrintWriter.print("\r");
                                                    mPrintWriter.print("\n");
                                                    mPrintWriter.flush();                                                       
                                        }
                                        return false;
                        }
                });

        mThread= new Thread(mRunnable);  //创建一个新的线程
        mThread.start();   //开启新的线程

    }

    private Runnable mRunnable = new Runnable()  //通过Runnable接口创建线程,来处理从服务器传来的数据
    {
            public void run()
            {
                    while (true)
                    {
                            try
                            {
                                    if((msg=br.readLine())!=null)
                                    {
                                            mHandler.sendMessage(mHandler.obtainMessage());
                                    }
                            }
                            catch(Exception e)
                            {
                                    Log.e(TAG,e.toString());
                            }
                    }
            }
    };

    Handler mHandler=new Handler()   //处理传来的数据
    {
            public void handleMessage( Message Msg)
            {
                    super.handleMessage(Msg);
                    try
                    {
                            textview2.setText(msg);
                    }
                    catch(Exception e)
                    {
                            Log.e(TAG,e.toString());
                    }
            }
    };
}

   然后我通过电脑串口调试助手进行试验,将手机连上wifi芯片的wifi,将wifi芯片与电脑串口相连,按下按钮,串口能够收到数据,但是从串口调试助手发送的数据就是显示不到textview2里面。请问这到底是怎么回事啊??是这个程序有什么问题,还是不能用串口调试助手传输数据??
    万分感谢
回复

使用道具 举报

发表于 2012-8-28 21:51:15 | 显示全部楼层
检查一下你的WIFI板子上面/etc/inittab这个文件的最后一行删除了没?删除了是可以数据回传的,看你的代码也是没问题的。
回复 支持 反对

使用道具 举报

发表于 2013-4-5 10:58:03 | 显示全部楼层
楼主,你的这个程序可以接收数据了吗?
其他部分可以给我参考一下吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-11-26 08:07 , Processed in 1.131929 second(s), 20 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表