arm板子,在程序中如何read "/dev/xxxxx"串口,cat/dev/xxx可以获得收到数据,想在程序中用
发布时间:2010-06-14 17:45:18 文章来源:www.iduyao.cn 采编人员:星星草
arm板子,在程序中怎么read "/dev/xxxxx"串口,cat/dev/xxx可以获得收到数据,想在程序中用
源码:
int main(int argc, char **argv)
{
int fd;
int nread;
//int time =100;
char *dev ="/dev/mygpio";
char revbuf[1024];
char *com_dev ="/dev/s3c2410_serial1";
int com_fd;
int time2 =100;
//int len;
int nwrite;
//char ch='Z';
char *buff="send a message to com!";
com_fd = OpenDev(com_dev);
if(com_fd < 0)
{
perror("myerror");
printf("Can't Open !\n");
exit(1);
}else{//open /dev/s3c2410_serial1 success
printf("open s3c2440_serial1 success!\n");
set_speed(com_fd,115200);
if (set_Parity(com_fd,8,1,'N')== FALSE)
{
printf("Set Parity Error\n");
exit(1);
}
if((nwrite = write(com_fd,buff,strlen(buff)))>0)
{
printf("%s\n",buff);
printf("\nLen %d\n",nwrite);
}else{
printf("write Error\n");
}
//read /dev/s3c2410_serial1
while(1)
{
fd_set rds;
int ret;
struct timeval tv;
FD_ZERO(&rds);
FD_SET(com_fd, &rds);
tv.tv_sec = 0.01;
tv.tv_usec = 500;
ret = select(com_fd+1, &rds, NULL, NULL, &tv);
if (ret < 0) {
perror("select");
exit(1);
}
if (ret == 0) {
printf("Timeout.\n");
}else
{
printf("select successs!!!!!!\n");
}
//sleep(1);
}
}
close(com_fd);
}
现在程序会一直timeout,但是串口工具确实一直在发数据,本来以为sleep的原因,注释掉,还是不行,设置波特率停止位那些函数,就是网上很流行的那套了
------解决方案--------------------
我的资源里面有实例,可以看看
------解决方案--------------------
tv.tv_sec = 0.01;
tv.tv_usec = 500;
是不是你设置的超时时间太小?改大点试试。实际上只有100ms,对于系统忙时,是不会有时间响应的。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
在驱动开发中出现 'struct' type redefinition 应该怎么办?? 大神们告诉小弟一下...
下面是我写的代码:
#pragma once
//**********...
-
大神们帮我看一下,我的代码错在什么地方? 加载成功,卸载就蓝屏了....
/*
*******************************************************...
-
sigma8653很罕见的问题
SOS!
sigma8653板子插上卡,上电后可以识别SD卡,然后软重启(reboot)就无法识别了!
奇怪的时,继续软重启一次又可...
-
Cancel自旋锁 起了什么作用?
发现IoCancelIrp 函数中
获取了Cancel自旋锁
设置了Irp->Cancel
调用了OnCancelIo函数
但是进入了On...
-
windows下 pnp设备的即插即用功能是怎么实现的?
看到 windows内核情景分析里说
加载驱动有三种方式 前两种是静态 分别是引导...
-
取消当前 IRP 执行的过程是怎样的?
#pragma code_seg("PAGE")
NTSTATUS MyWdmRead(PDEVICE_OBJECT DeviceObject,PIRP Irp)
{
...
-
vs2008中,link2001错误的问题,代码如下
vs2008中,link2001错误的问题,代码如下
#include <ntddk.h>
VOID OnUnload(IN PDRIVER_OBJ...
-
什么是内核缓冲区,用户缓冲区
比如网卡的内核缓冲区,那这个缓冲区是在pc内存还是在网卡的芯片上呢?
------解决方案---------------...
-
如果在一个函数中有提升IRQL的语句 是不是整个函数都不能放在分页内存中 ?
如果我在一个函数前使用了 #pragma code_seg("PAGE") ...
-
请教Linux下dm9000网卡驱动程序问题
应用程序网络编程是基于socket接口的,好像完全屏蔽了底层,不能像字符设备那样应用程序可以调用...