您好我想将数据从我的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;
}
提前致谢..
答案 0 :(得分:1)
我不确定你要在这里实现什么,因为问题和意图对我来说似乎不清楚。我会提供一些指导,但建议您编辑问题并使其更具可读性。
您要比较字符串的代码段不正确。您可以在here中了解有关如何比较C中字符串的更多信息。
在C中更改字符串是您开始使用字符串时学习的基本操作。 This应该可以帮助您入门。
最后请注意,内核编程需要额外注意。一个小错误可能会导致崩溃和数据丢失。如果你真的必须,那么这本书Linux Device Drivers 3rd Edition是免费提供的,可以为你提供进一步的帮助。
答案 1 :(得分:1)
只是对写入串口的评论:
记住Linux基础,一切都是Linux中的文件。要从程序写入设备驱动程序,您需要打开文件进行写入,然后您可以fprintf您想要的任何数据。您也可以从用户空间(推荐的方式)
执行此操作请参阅以下手册页: