Linux DD将数据传递到串口ttyS0

时间:2012-08-20 18:00:04

标签: linux-device-driver kernel

您好我想将数据从我的char设备驱动程序传递到串口ttyS0 ..

我创建了一个简单的char驱动程序模块,它可以读取和写入,这是我的第一个tym做它...我正在使用debian guest os ...

e.g。

echo“hello”>的/ dev / mydev的

现在当/ dev / mydev收到数据时,它会将字符串改为像“hello too”这样的东西,然后传递给我的串口/ dev / ttyS0 ..

我怎么能改变字符串?..是否可以在mydev中使用if语句?

e.g

if(string=="hello"){
alterstringTO: hello to;

pass "hello to" /dev/ttyS0;

like echoing in terminal..

echo "hello to" > /dev/ttyS0
}

这可能吗?......还是有其他办法吗?

这里有一些代码..

ssize_t dev_read(struct file *filp, char *buf, size_t clen, loff_t *f_pos){

short cnt =0;
while(clen && (msg[Pos]!=0))
{
    put_user(msg[Pos],buf++);
    cnt++;
    clen--;
    Pos++;
}
return cnt;

    }


   ssize_t dev_write(struct file *filp, const char *buf, size_t clen, loff_t *f_pos){

short dec = clen-1;
short cnt=0;
memset(msg,0,50);
Pos=0;
while(clen>0)
{
    msg[cnt++] = buf[dec--];
    clen--;
}
return cnt;
    }

提前致谢..

2 个答案:

答案 0 :(得分:1)

我不确定你要在这里实现什么,因为问题和意图对我来说似乎不清楚。我会提供一些指导,但建议您编辑问题并使其更具可读性。

您要比较字符串的代码段不正确。您可以在here中了解有关如何比较C中字符串的更多信息。

在C中更改字符串是您开始使用字符串时学习的基本操作。 This应该可以帮助您入门。

最后请注意,内核编程需要额外注意。一个小错误可能会导致崩溃和数据丢失。如果你真的必须,那么这本书Linux Device Drivers 3rd Edition是免费提供的,可以为你提供进一步的帮助。

答案 1 :(得分:1)

只是对写入串口的评论:

记住Linux基础,一切都是Linux中的文件。要从程序写入设备驱动程序,您需要打开文件进行写入,然后您可以fprintf您想要的任何数据。您也可以从用户空间(推荐的方式)

执行此操作

请参阅以下手册页:

  • man fopen
  • man fread / fwrite
  • man fprintf
  • man fclose