免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 804 | 回复: 0
打印 上一主题 下一主题

9260EK-linux-串口测试程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-25 17:16 |只看该作者 |倒序浏览
串口测试程序
由于已经完成了第一个HELLO程序,标志着整个编译环境已经没有问题了,下来准备做一下串口测试程序。由于串口驱动开发板已经作好了,所以就作一个简单的数据收发看看。
网上常见的版本都看起来比较烦琐,呵呵,写一个简单一点的,功能是收到10个字节后会发前7个字节,如果所发的数据的第一个字节是9则退出。
/* rs232_send.c*/
#include
#include
#include
#include
#include   
#include
#include
#include     
#include
#define   BAUDRATE       B115200//38400
#define   MODEMDEVICE    "/dev/ttyS1"
int main()
{
    int     fd,c=0,res;
    struct termios oldtio,newtio;
    int    ch;
    static char s1[20],buf[19];
    printf("start ...\n");
    /*打开PC的COM1口*/
    fd = open(MODEMDEVICE,O_RDWR|O_NOCTTY);
    if (fd
    {
       perror(MODEMDEVICE);
       exit(1);
    }
    printf("open...\n");
    /*将旧的通讯参数存入oldtio结构*/
    tcgetattr(fd,&oldtio);
    /*初始化新的newtio */
    bzero(&newtio,sizeof(newtio));
    /*8N1*/
    newtio.c_cflag = BAUDRATE|CS8|CLOCAL|CREAD;
    newtio.c_iflag = IGNPAR;
    newtio.c_oflag = 0;
   
    /*正常模式*/
    /*newtio.c_lflag = ICANON;*/
      
    /*非正常模式*/
    newtio.c_lflag = 0;
    newtio.c_cc[VTIME] = 0;
    newtio.c_cc[VMIN] = 10;
      
    tcflush(fd,TCIFLUSH);
    /*新的temios作为通讯端口参数*/
    tcsetattr(fd,TCSANOW,&newtio);
    printf("writing...\n");
   
    while(1)
    {
       res = read(fd,buf,10);
       res = write(fd,buf,7);
       if(buf[0]==9) break;
    }
   
    printf("close...\n");
    close(fd);
    /*还原旧参数*/
    tcsetattr(fd,TCSANOW,&oldtio);
    return 0;
}
还有一点要注意,就是串口有两种工作模式,即正规模式和非正规模式,如果习惯在串口调试器中用16进制发送,此时串口应该为非正规模式才行。
下面是这两种模式的说明
正规模式(CANONICAL或者COOKED)
此模式下,终端设备会处理特殊字符,并且数据传输是一次一行的方式,既按回车后才开始发送和接收数据。例如LINUX的SHELL。
非正规模式(NON-CANONICAL或者RAW)
此模式下,终端设备不会处理特殊字符,并且数据传输是一次一个字符的方式,既不用按回车换行。例如LINUX的VIM。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/80698/showart_1225365.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP