免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: tianzihuang
打印 上一主题 下一主题

请教关于uclinux下的串口通信问题!! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-12-22 11:11 |只看该作者
串口他有两个buffer,一个读缓冲,一个写缓冲。你写串口时是把数据写到写缓冲里,读数据是把读缓冲的数据读进来。

论坛徽章:
0
12 [报告]
发表于 2006-12-22 11:18 |只看该作者
把串口的2 3 脚 短路就行了

论坛徽章:
0
13 [报告]
发表于 2006-12-22 11:19 |只看该作者
原帖由 wenlin1982 于 2006-12-22 11:18 发表
把串口的2 3 脚 短路就行了

这位大虾对串口硬件方面很熟啊,我真的没往这方面想过呢。

论坛徽章:
0
14 [报告]
发表于 2006-12-22 13:36 |只看该作者
我刚刚用下面的方法做了一下:
我实验箱有两个串口,我就分别和电脑的串口0和串口1对接。
我开了两个minicom,串口0就用来下载程序用以及printf的打印信息,
我对串口1进行操作先open,然后用write(fd,wbuf,;可以看到串口1的minicom输出123,说明对了
然后应用程序中就对串口1进行读,read(fd,rbuf,1);读的内容是通过在串口1的minicom上输入的内容,然后通过printf在串口0的minicom上打印结果。
每次按一次键输入一个字符,minicom上能显示内容,read的返回值也对,但是输出的字符并不是我按键值,请问是为什么啊?波特率都设了115200,应该没问题的,因为写出去123已经对了啊。
现在的现象是,我一次按键盘1-9,打印有规律的,前几个分别是0,0,0,0,080,125……

论坛徽章:
0
15 [报告]
发表于 2006-12-22 13:42 |只看该作者
这是我之前遇到的一个问题原因,不知道你是否和我犯了同一个错误?
/*我认为真正正确的模型应该是:
while(1)
{
        fd=open("/dev/ttyS0",O_RDWR);
        nwrite=write(fd,buffer,length);
        close(fd);
}
因为没有close掉文件描述符的时候,读写指针会递增,就是说第二次输入的数据不会覆盖第一次的输入的数据,而是把它追加上去。
或者在不改变原有模型的情况下,添加lseek函数,lseek(fd,(off_t)0,SEEK_SET);*/

论坛徽章:
0
16 [报告]
发表于 2006-12-22 15:19 |只看该作者
我把我的程序贴上来,你帮我分析一下:
char hd[16];
fd=open("/dev/ttyS1",O_RDWR|O_NOCTTY|O_NDELAY);
nwrite=write(fd,"123",;  //可以成功打印
rbuf=hd;                       
while(*rbuf!='\0')          //从电脑键盘输入,读到结束标志才推出while
{
retv=read(fd,rbuf,1);
if(retv==1)
{
   ncount++;
   rbuf++;
}
}
……  //打印信息
while(1);
当while里的判断条件是判断'\0'时,数组一个都读不到就做到最后一句了,如果是改成其他的判断条件,如'9',则出现我上面说的那种情况

论坛徽章:
0
17 [报告]
发表于 2006-12-22 16:03 |只看该作者
想问一下,你所说的键盘输入是指在minicom输入,还是在你的应用程序里输入?

论坛徽章:
0
18 [报告]
发表于 2006-12-22 16:15 |只看该作者
是minicom里输入,在串口1的minicom里输入,然后应用程序的printf通过串口0的minicom打印结果,看看收到的对不对

论坛徽章:
0
19 [报告]
发表于 2006-12-22 16:38 |只看该作者
我觉得这种情况很复杂的。利用串口多次发送接收数据,关键在于两个程序之间的协调。对于这种情况,我觉得还是用中断方式比较好搞。可惜我没试过用c来写过中断方式的串口程序,觉得用汇编比较直观。

论坛徽章:
0
20 [报告]
发表于 2006-12-22 16:44 |只看该作者
而我又只在单片机上写过这方面的汇编程序,那不基于任何操作系统的。没有在嵌入式系统上写过汇编程序的经验,无从说起。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP