苦恼的问题!

yanxd1983   2009-1-7 10:19 楼主
最近编一个串口通信的程序,运行程序后在minicom中没有显示任何的传输数据迹象。程序的功能是当向下位机发送一个字符“0x0d”后,下位机自动回复,当缓存区再次接收到“0x0d”后在终端显示,哪位师兄师姐能指点我这个小师弟一下。串口参数是:比特率19200,数据位8,奇偶校验位无,无数据流,停止位1.程序如下:
#include
#include
#include
#include
#include
#include
#include
#include
#define DEVICE_TTYS "/dev/ttyS0"
void init_ttyS(int fd)
{
    struct termios options;
    bzero(&options,sizeof(options));
    cfsetispeed(&options,B19200);
    cfsetospeed(&options,B19200);
    options.c_cflag |=(-CRTSCTS|CS8|CLOCAL|CREAD);
    options.c_iflag=IGNPAR;
    tcflush(fd,TCIFLUSH);
    tcsetattr(fd,TCSANOW,&options);
}
void Link_test(void)
{
    int fd;
    int a=0;
    int nread;
    char c=13;
    char buff1[1];
    buff1[0]=c;
    char buff[512];
    write(fd,buff1,1);
    do{nread=read(fd,buff,512);}
    while(buff[nread+1]!=c);
    printf("\n%s",buff);
}
int main(void)
{
    int fd;
    fd=open(DEVICE_TTYS,O_RDWR);
    if(fd==-1)
     {
       printf("open device %s error\n",DEVICE_TTYS);
     }
    else
     {
       init_ttyS(fd);
       Link_test();
                                                                                
     }

回复评论 (13)

帮顶!
点赞  2009-1-8 17:20
你用的是什么芯片
我以前用186的时候用的是COM0,
使用的是查询方式,但是在使用的时候一定要关COM的中断不然发送或接收就会触发死掉

最好看看你使用的串口中间件搞清楚了再用
点赞  2009-1-8 20:35
用的是s3c2410,串口中间件是什么?
点赞  2009-1-10 10:03
你是在Linux下开发吧?

现在碰到什么问题?估计是无法看到0x0d显示吧。

那就要判断无法发送?无法接收?接收了无法显示?
点赞  2009-1-10 11:29
恩,是在linux下开发,出现的问题也是这些,高手指点一下吧
点赞  2009-1-10 12:03
write(fd,buff1,1);
do{nread=read(fd,buff,512);}

这里面的fd哪里来的?main当中的fd是main的局部变量,在test中可没法用的。要么传递指针,要么定义成全局变量。
这样编译器都不报错?
点赞  2009-1-10 12:46
Link_test里的第一行定义了啊
点赞  2009-1-10 15:32
知道定义了,但已经不是main里面那个fd=open(DEVICE_TTYS,O_RDWR); 了。

fd在Link_test里面只是个普通的局部变量,你这样读写无法实际映射到串口里去。

如果有时间,建议先去翻看一下C语言的变量作用域(生存范围),以及函数的参数传递。
点赞  2009-1-12 08:41
友情up
点赞  2009-1-12 09:05
友情up
点赞  2009-1-12 09:05
引用: 引用 8 楼 shuiyan 的回复:
知道定义了,但已经不是main里面那个fd=open(DEVICE_TTYS,O_RDWR); 了。

fd在Link_test里面只是个普通的局部变量,你这样读写无法实际映射到串口里去。

如果有时间,建议先去翻看一下C语言的变量作用域(生存范围),以及函数的参数传递。

顶!
点赞  2009-1-23 16:50
就是没有fd
点赞  2009-2-6 21:49
fd定义成全局变量
点赞  2009-2-7 09:41
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复