天嵌 ARM开发社区

 找回密码
 注册
查看: 4113|回复: 10

TQ2440串口写的问题

[复制链接]
rqmini 发表于 2010-12-23 13:07:40 | 显示全部楼层 |阅读模式
以下代码来自天嵌提供的Serial_Test.c部分内容
void serial_rw()
{
        int i;
        char buff[512];
        char buff2[] = "hello,TQ2440!\n";
        int nread,nwrite;

        nwrite = write(serial_fd,buff2,sizeof(buff2));
                printf("nwrite=%d\n",nwrite);
        while(1)
        {
                if((nread = read(serial_fd,buff,512))>0)
                {
                        buff[nread] = '\0';
#if 0        //调用这段代码可以实现回显,如果配合上面的回显,就会出现回显两次的情况。
                        write(serial_fd,buff,nread);
#endif
                        printf("\nrecv:%d\n",nread);
#if 0
                        for(i=0;i<nread;i++)
                        {
                                printf("%c",buff);
                        }
                        printf("\n");
#else
                        printf("%s",buff);
                        printf("\n");
#endif
                }
        }

        close(serial_fd);

}


红色的程序部分运行完显示nwrite=15。但是串口监视软件显示电脑没有接收到buff2。

还个问题是,while(1)循环是不是测试电脑发送数据到开发板是否正确,根本不是开发板发数据给电脑。这里我输入数据,串口监视软件有显示开发板接收到。

这几天搞这个串口通信搞的头大,有懂的大哥,帮忙解下惑~~跪谢!
天嵌_support1 发表于 2010-12-23 14:39:37 | 显示全部楼层
1# rqmini


是的,这个是给串口写数据,然后读出来而已。
你要打印到串口终端就用 uart_print 函数来打印的
 楼主| rqmini 发表于 2010-12-25 10:42:16 | 显示全部楼层
本帖最后由 rqmini 于 2010-12-25 10:46 编辑

串口通信已解决。

开发板只有一个串口,需要释放tq2440_serial0作为通信串口(关闭调试串口)。

具体方法有2种,只解决了一个。

在内核编译过程中执行make menuconfig
Character devices --->
Serial drivers --->
S3C2410 serial port support
[ ] Console on S3C2410 serial port 【注】去掉这项即可
这样就不能用tq2440_serial0口来登录开发板了,可以选择用telnet的方式来登录。

但是问题又来了,居然telnet登录不了,telnet启动有设置吗?
另外一个方法还就是通过程序来转换console,还未解决。
yby28471231 发表于 2011-1-2 03:55:38 | 显示全部楼层
楼主能传一份,TQ2440_Test源码给我吗??
点水之恩,定当涌泉相报。。。
yby28471231@126.com
qq:28471231
yby28471231 发表于 2011-1-6 00:14:43 | 显示全部楼层
楼主,你的这段代码有问题:
                   for(i=0;i<nread;i++)
                        {
                                printf("%c",buff);
                        }
buff 是指针,你怎么可以用字符来打印呢
还有你这个循环没有什么意义,因为你的buff 没有进行偏移,一直指向第一个字符处。


还有你说串口没有读到字符,你没有在PC终端串口工具中输入,你的2440板子上哪去读呢??总不能向串口写入字符,又从相同的串口读出来吧???
天嵌_support1 发表于 2011-1-6 10:56:56 | 显示全部楼层
:)楼上正解
qianguozheng 发表于 2011-8-20 17:55:15 | 显示全部楼层
uart对应的是哪个驱动呢?
不言DXH 发表于 2011-10-27 15:55:40 | 显示全部楼层
我关于这个serial_test也有很多问题啊!
在运行serial_test的时候,根本就不能进入那个whlie(1)中的那个if里面!即使在键盘上输入了字符,也没有显示“nrev:”我找read()函数好长时间也没有找打,只是在unistd.h里面有个extern...read(...)声明。
我想知道为什么进入不了if?
不言DXH 发表于 2011-10-27 16:17:59 | 显示全部楼层
哦,我好想明白了,不知道对不对。
由于开发版只有一个串口,而且用于控制台consoel了,所以COM3就无法连接了,也就不能向console的COM1发送字符了,所以没有显示“recv:”之类的东西
亚瑟王 发表于 2011-11-14 19:26:00 | 显示全部楼层
开发板有3个串口,只是串口1被用于控制台了。
raominping 发表于 2011-11-23 14:11:26 | 显示全部楼层
技术贴,顶了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-2 22:32 , Processed in 1.032266 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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