驱动程序与串口通信融合

方丈的寺院
Java领域优质创作者
博客专家认证
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函数可以打印,但是不知道为什么无法发送数据。
求解释,求指教
...全文
164 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
方丈的寺院 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里了?

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧