QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 997|回复: 4

各位大侠好!有谁对linux下的串口编程比较熟悉,麻烦帮忙!

[复制链接]
发表于 2005-5-19 11:10:28 | 显示全部楼层 |阅读模式
我在win下用VB能对串口进行控制,数据输入方式是二进制的,不是文本数据方式,在linux中怎样设置串口的二进制输入方式;打开串口和对串口写数据都成功;另外在linux下有没有比较好用的串口调式工具啊!请大侠帮帮忙!
发表于 2005-5-19 11:40:57 | 显示全部楼层
拿这个去试试,不行就慢慢调吧,二进制问题其实就是串口的raw模式问题,设为raw模式就行了。

[code:1]
#include <termios.h>
#include <termio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>

int SerialInit(char *dev)
{
    int fd;
    struct termios   Opt;
    fd=open(dev,O_RDWR);// | O_NOCTTY);
    if(fd<=0)
        return -1;
    if  ( tcgetattr( fd,&Opt)  !=  0)
        return -1;
    cfsetispeed(&Opt, B9600);
    cfsetospeed(&Opt, B9600);
    Opt.c_cflag |= (CLOCAL | CREAD);
    Opt.c_lflag &=~(ICANON | ECHO | ECHOE | ISIG);  //ÉèÖÃΪRAWģʽ
    Opt.c_oflag &=~OPOST;           //ÉèÖÃΪRAWģʽ
    Opt.c_oflag &=~VTDLY;
    Opt.c_iflag &=~(IXON | ICRNL);  //ͨѶÖв»´¦Àí¿ØÖÆ×Ö·û

    Opt.c_cc[VTIME] = 1;
    Opt.c_cc[VMIN] = 0;

    Opt.c_cflag &= ~CSIZE;
    Opt.c_cflag |= CS8;
    Opt.c_cflag &= ~PARENB;   /* Clear parity enable */
    Opt.c_iflag &= ~INPCK;    /* Enable parity checking */
    Opt.c_cflag &= ~CSTOPB;
    tcflush(fd,TCIOFLUSH); /* Update the options and do it NOW */
    if (tcsetattr(fd,TCSANOW,&Opt) != 0)
    {       perror("SetupSerial 3");
        return (0);
    }
    tcflush(fd,TCIOFLUSH); /* Update the options and do it NOW */


    return fd;
}

[/code:1]
回复

使用道具 举报

 楼主| 发表于 2005-5-19 11:44:15 | 显示全部楼层
我的QQ是21158322,你能加我吗?有问题再请教你!谢谢了!
回复

使用道具 举报

发表于 2005-5-19 17:16:53 | 显示全部楼层
不用QQ,有问题这里问啊
回复

使用道具 举报

发表于 2005-5-19 18:11:56 | 显示全部楼层
斑竹,我也做得Linux下的一个串口驱动,用的是redhat9.0,实在用户态下用GCC编译的,但总是出现“找不到头文件”的错误,请问是怎么回事啊,是不是不能在用户态下做啊??
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-6 00:37 , Processed in 0.046424 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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