驱动程序与串口通讯融合

驱动程序与串口通信融合
程序想实现这样的功能:按键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函数可以打印,但是不知道为什么无法发送数据。
求解释,求指教

------解决方案--------------------
write(fd,&c,1);
你发送串口数据的fd是 fd = open("/dev/KEYS0",0);
当然串口不会有数据出去了,都发给KEYS0了