驱动程序与串口通信融合

方丈的寺院 软件工程师  2012-06-19 03:41:06
程序想实现这样的功能:按键S1按下,ARM通过RS232发送0,按键S2按下,ARM通过rs232发送1
目前我的键盘驱动单独测试是没问题,串口通信单独测试页是没问题的,放在一起时无法发送数据,下面是我的发送函数的功能实现。
void* send(void * data)
{
int ret,i;
unsigned int keys_value=0;
int c='0';
printf("send data\n");
while(STOP==FALSE)
{
fd = open("/dev/KEYS0",0);//open the button
if(fd<0)
{
printf("open /dev/KEYS error!\n");
//return -1;
}

for(;;)
{
ret=read(fd,&keys_value,sizeof(keys_value));
if(ret<0)
{
printf("read err!\n");
continue;
}
switch(keys_value)
{
case 0xEE:

write(fd,&c,1);
usleep(100000);
printf("S1 PRESS ,send 0\n");

break;
case 0xDE: c++;
printf("S2 PRESS,send 1\n");
printf("send success\n");
write(fd,&c,1);
usleep(100000);
break;
}
keys_value=0;
c='0';
}
}
}
可能出错的地方应该是switch函数中的实现错误,因为按键按下时printf函数可以打印,但是不知道为什么无法发送数据。
求解释,求指教
...全文
89 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
方丈的寺院 2012-06-19
太谢谢你了,试了下,可以了。非常感谢,分全给你了[Quote=引用 3 楼 的回复:]

write(fd,&c,1);
你发送串口数据的fd是 fd = open("/dev/KEYS0",0);
当然串口不会有数据出去了,都发给KEYS0了
[/Quote]
回复
falloutmx 2012-06-19
write(fd,&c,1);
你发送串口数据的fd是 fd = open("/dev/KEYS0",0);
当然串口不会有数据出去了,都发给KEYS0了
回复
方丈的寺院 2012-06-19
读按键的,串口驱动在主函数中[Quote=引用 1 楼 的回复:]

fd = open("/dev/KEYS0",0);
你这个驱动到底是读按键的还是发232数据的?还是说两个驱动都在KEYS0里了?
[/Quote]
回复
falloutmx 2012-06-19
fd = open("/dev/KEYS0",0);
你这个驱动到底是读按键的还是发232数据的?还是说两个驱动都在KEYS0里了?
回复
相关推荐
发帖
驱动开发/核心开发
创建于2007-09-28

2.1w+

社区成员

硬件/嵌入开发 驱动开发/核心开发
申请成为版主
帖子事件
创建了帖子
2012-06-19 03:41
社区公告
暂无公告