主题 : 【新手求助】有没有哪位写过同时打开两个串口并通信的代码? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 72908
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
综合积分: 10 分
注册时间: 2012-06-30
最后登录: 2012-09-06
楼主  发表于: 2012-07-13 00:54

 【新手求助】有没有哪位写过同时打开两个串口并通信的代码?

我是新手,刚刚接触开发板,被要求写一个能够打开两个串口
并且能依次对两个串口进行“写-读”操作的程序
然后达到收发数据的效果

自己写了一点代码,单独测试能用,偶尔有丢数据的情况
但是一旦加到一个大的工程里(作为别人代码里的一个收集数据的线程) 就只能实现与一个串口的通信了 另一串口完全没有收发

自己调试了很久都没成功
有没有哪位大侠写过类似程序的 能否发给我借鉴一下 邮箱 gyvdjk@126.com

2楼贴我的代码  也请大家帮忙指出问题所在 谢谢!!!
级别: 新手上路
UID: 72908
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
综合积分: 10 分
注册时间: 2012-06-30
最后登录: 2012-09-06
1楼  发表于: 2012-07-13 01:05
fd1=HardwareControler.openSerialPort("/dev/ttyUSB0", 115200, 8, 1);
      
  fd2=HardwareControler.openSerialPort("/dev/ttyUSB1", 9600, 8, 1);

public void run(){
            Message msg = new Message();
            msg.arg1 = 0;      
            handler.sendMessage(msg);
            handler.post(dc);
            }


Handler handler = new Handler()
        {
            @SuppressWarnings("static-access")
            public void handleMessage(Message msg)
            {
                switch (msg.arg1) {
                case 0:  

                if(tag==0)
                {
                    serial.write(fd1, create);//启动设备                      
                }
                else
                {
                    serial.write(fd1, gotobegin);//写入读的信号
                }
                tag=1;
                int len1 = serial.read(fd1, buf1, 150);        
                            
                strp=new String(buf1,0,len1);
                
                int len2 = serial.read(fd2, buf2, 50);
            strq=new String(buf2,0,len2);
                
            readTextView.setText(strf);
            
               default:
                   break;
                }
            }
        };


其实我就特别想知道  这样直接顺序执行对两个串口的读和写(只有第一个串口需要写)
它能达到我想要的效果吗   (虽然自己的这部分单独测试过是可以的)
但却不能被别人的程序调用。。。求各位帮帮忙啊
我总觉得应该有更加合理的写法的


在这说明一下 我在调用read之前没有调用select 但是却能读出数据
反而调用了select 返回值总!=1  因此没调select
是不是我调用的不对呢?
级别: 骑士
UID: 29604
精华: 9
发帖: 171
金钱: 1830 两
威望: 366 点
综合积分: 522 分
注册时间: 2010-10-01
最后登录: 2016-04-13
2楼  发表于: 2012-07-13 15:46
2个串口的读取需要2个线程