主题 : mini2440与主机串口通信奇怪现象??? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 5164
精华: 0
发帖: 37
金钱: 320 两
威望: 280 点
综合积分: 74 分
注册时间: 2009-04-12
最后登录: 2011-06-07
楼主  发表于: 2009-06-10 10:59

 mini2440与主机串口通信奇怪现象???

在mini2440上运行发送程序:(以下只是发送循环)
printf("please send datas to the port...\n");

    while(1)
    {
        memset(buf,'\0',20);
        if(fgets(buf,20,stdin) == NULL)
             {
                   printf("fgets error!\n");
                   exit(1);
             }
        nwrite=strlen(buf);
        write(fd,buf,nwrite);
        printf("have sent:%s,nwrite=%d\n",buf,nwrite);
    }

在主机上运行接受程序:(以下是接受循环)
printf("receiving datas...\n");
    FD_ZERO(&rd);
    FD_SET(fd,&rd);
    while(1)
    {
        //FD_ZERO(&rd);
        //FD_SET(fd,&rd);
        switch(select(fd+1,&rd,NULL,NULL,NULL))
        {
            case -1:exit(1);
            case 0:break;//等待超时
            default://有可读写文件
                if(FD_ISSET(fd,&rd))
                {
                    memset(buf,'\0',20);
                    nread=read(fd,buf,20);
                    printf("nread=%d,%s\n",nread,buf);            
                }
        }
    }

运行结果却是发送端发送一次,接收端却作两次接收,第一次只接收发送数据的第一个字符,第二次才把剩下的字符都接收过来,
运行结果如下:
发送端:
[root@(none) uart]# ./write_port
open port1 success!
fcntl success!
isatty success!
open fd=3
uart port set done!
fd=3
please send datas to the port...
egrhsgg
have sent:egrhsgg
,nwrite=8
2353265
have sent:2353265
,nwrite=8
89
have sent:89
,nwrite=3

have sent:
,nwrite=1

接收端:
[root@VM-F10 uart]# ./read_port
open port3 success!
fcntl success!
isatty success!
open fd=3
uart port set done!
receiving datas...
nread=1,e
nread=7,grhsgg

nread=1,2
nread=7,353265

nread=1,8
nread=2,9

nread=1,

很奇怪阿,如果用minicom接收显示,结果一样,那难道是发送端程序有问题?找不出阿。。。高手帮帮忙阿,多谢!
我用的是虚拟机,主机端采用USB转串的
这个阶段正是我事业的上升期,我怎么能走得开呢?
级别: 精灵王
UID: 3197
精华: 3
发帖: 770
金钱: 6995 两
威望: 5398 点
综合积分: 1600 分
注册时间: 2008-12-30
最后登录: 2010-12-31
1楼  发表于: 2009-06-10 11:29
mini2440的手册中已经提供了串口编程的例子,自己下载看看了。

这里也有:
http://www.arm9.net/download-linux-examples.asp
级别: 新手上路
UID: 5164
精华: 0
发帖: 37
金钱: 320 两
威望: 280 点
综合积分: 74 分
注册时间: 2009-04-12
最后登录: 2011-06-07
2楼  发表于: 2009-06-10 15:21
这上面的串口编程例子确实不错,不过我的程序感觉也没问题阿,这怪现象究竟怎么回事,那位高手能解释下,期待中。。。
级别: 新手上路
UID: 52595
精华: 0
发帖: 15
金钱: 75 两
威望: 15 点
综合积分: 30 分
注册时间: 2011-07-21
最后登录: 2012-07-06
3楼  发表于: 2011-07-28 10:38
楼主你解决了吗?我和你问题一样啊?能给我回个话吗?我的联系方式546172371,谢谢