当前位置:  技术问答>linux和unix

串口读数据的问题

    来源: 互联网  发布时间:2016-05-25

    本文导语:  #include  #include  #include  #include  #include  #include  #include  #include  #include  int set_opt(int fd,int nSpeed, int nBits, char nEvent, int nStop) {     struct termios newtio,oldtio;     if ( tcgetattr( fd,&oldtio) != 0) {         per...

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
int set_opt(int fd,int nSpeed, int nBits, char nEvent, int nStop)
{
    struct termios newtio,oldtio;
    if ( tcgetattr( fd,&oldtio) != 0) {
        perror("SetupSerial 1");
        return -1;
    }
    bzero( &newtio, sizeof( newtio ) );
 //newtio.c_iflag |= INPCK; 
    newtio.c_cflag |= CLOCAL | CREAD;
    newtio.c_cflag &= ~CSIZE;
 newtio.c_lflag  &= ~(ICANON | ECHO | ECHOE | ISIG);  /*Input*/
 newtio.c_oflag  &= ~OPOST;   /*Output*/
 //newtio.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
    switch( nBits )
    {
    case 7:
        newtio.c_cflag |= CS7;
        break;
    case 8:
        newtio.c_cflag |= CS8;
        break;
    }
    switch( nEvent )
    {
    case 'O':
        newtio.c_cflag |= PARENB;
        newtio.c_cflag |= PARODD;
        newtio.c_iflag |= (INPCK | ISTRIP);
        break;
    case 'E':
        newtio.c_iflag |= (INPCK | ISTRIP);
        newtio.c_cflag |= PARENB;
        newtio.c_cflag &= ~PARODD;
        break;
    case 'N':
        newtio.c_cflag &= ~PARENB;
        break;
    }
switch( nSpeed )
    {
    case 2400:
        cfsetispeed(&newtio, B2400);
        cfsetospeed(&newtio, B2400);
        break;
    case 4800:
        cfsetispeed(&newtio, B4800);
        cfsetospeed(&newtio, B4800);
        break;
    case 9600:
        cfsetispeed(&newtio, B9600);
        cfsetospeed(&newtio, B9600);
        break;
    case 115200:
        cfsetispeed(&newtio, B115200);
        cfsetospeed(&newtio, B115200);
        break;
    default:
        cfsetispeed(&newtio, B9600);
        cfsetospeed(&newtio, B9600);
        break;
    }
    if( nStop == 1 )
        newtio.c_cflag &= ~CSTOPB;
    else if ( nStop == 2 )
    newtio.c_cflag |= CSTOPB;
    newtio.c_cc[VTIME] = 0;
    newtio.c_cc[VMIN] = 0;
    tcflush(fd,TCIFLUSH);
    if((tcsetattr(fd,TCSANOW,&newtio))!=0)
    {
        perror("com set error");
        return -1;
    }
    printf("set done!n");
    return 0;
}
int open_port(int fd,int comport)
{
    char *dev[]={"/dev/ttyS0","/dev/ttyS1","/dev/ttyS2"};
    long vdisable;
    if (comport==1)
    {    fd = open( "/dev/ttyS0", O_RDWR|O_NOCTTY|O_NDELAY);
        if (-1 == fd){
            perror("Can't Open Serial Port");
            return(-1);
        }
        else
            printf("open ttyS0 .....n");
    }
    else if(comport==2)
    {    fd = open( "/dev/ttyS1", O_RDWR|O_NOCTTY|O_NDELAY);
        if (-1 == fd){
            perror("Can't Open Serial Port");
            return(-1);
        }
        else
            printf("open ttyS1 .....n");
    }
    else if (comport==3)
    {
        fd = open( "/dev/ttyS2", O_RDWR|O_NOCTTY|O_NDELAY);
        if (-1 == fd){
            perror("Can't Open Serial Port");
            return(-1);
        }
        else
            printf("open ttyS2 .....n");
    }
    if(fcntl(fd, F_SETFL, 0) 

    
 
 

您可能感兴趣的文章:

  • 怎么判断串口已经收到数据,并及时读出?怎么判断串口已经将写入的数据发送完毕?
  • linux下几个设备通过串口串行连接,如何协调各串口发送数据
  • linux下串口发送数据用串口精灵接受不到或为全零
  • 将串口数据转为鼠标事件
  • 串口应用程序,当对方发送大量的数据时,本方的数据无法发出。对方停止发送,本方的数据仍然无法发出。不知道是什么原因。
  • linux串口程序可以发送数据,但是不能接受数据?谁知道原因?
  • 求助:关于串口数据采集并保存到数据库的问题(分不够再加)
  • 串口通讯 丢失数据
  • linux串口读取数据的问题,select
  • Linux 串口发送接收数据问题
  • 【求指点】一个关于串口通信数据位数的问题
  • 分块从串口发送图片数据,总是丢失部分数据,救命~急!急!急!急 (100分)在线等
  • 串口读数据时nread=0怎么办?
  • 到底怎么样才能一次性读出串口数据
  • 请问如何编程实现中断机制读取串口数据
  • 要加多个串口,怎么分别指定他们的driver_name和dev_name以示区别各个串口? iis7站长之家
  • 串口读取数据的问题
  • 请教串口通信中用超级终端配置时数据解析
  • 串口接收数据丢失,怀疑是中断引起的,请指教
  • 虚拟串口怎么读数据? 请有 串口 或者 usb 驱动经验的高手指点
  • 关于linux串口通信中写串口的问题
  • vmware 上 linux 串口问题
  • 请教一个linux串口通讯问题?
  • linux下串口通信的问题
  • 板间串口通信问题
  • 扩展的串口卡上的串口操作的问题
  • 急!急!急!急!急! liux 串口问题
  • 最棘手一种串口问题。请教高手。在线等
  • 在线等待,求助LINUX下串口问题
  • 急了急了:串口read函数问题!
  • 串口配置问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • 散分100,求解串口键盘和串口鼠标驱动
  • Linux 中用java语言写串口程序,提示找不到串口
  • 高分求助:我笔记本没有串口,在linux下要和一个串口设备连,怎么办?
  • 开发板串口与实际内核中的串口文件的对应关系怎么回事?谢谢帮忙
  • 工控机有6个串口,但用光盘安装debian6.05,在dev中只找到4个串口,如何解决。
  • 在虚拟Linux系统下能进行串口通讯吗?最好给个串口通讯的代码!谢谢!
  • 要加多个串口,怎么分别指定他们的driver_name和dev_name以示区别各个串口?
  • 工控机上用光盘安装debian6.05,硬件上有6个串口,但是软件上即dev中只有4个串口,如何解决。
  • 嵌入式linux,串口初始化时,无法设置串口属性
  • 请教串口通信的编程
  • 请问如何以独占的方式打开串口
  • linux串口驱动该怎么写
  • linux下如何清空串口的输入输出缓存
  • linux下怎么监控串口?
  • u-boot中处理串口通讯的源码在哪?
  • 求助达人,USB转串口是否遇到过多台设备接入机器,串口冲突?
  • 串口转USB出现乱码
  • 串口modem驱动
  • arm串口缓冲和c编程请教


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,