0

嗨,我编写了一个将数据传递给/dev/ttyS0..的用户应用程序。我使用 php 将数据发送到用户应用程序,然后在用户应用程序中有一个 if else 然后将新数据传递给/dev/ttyS0..

例如

PHP -> user app - > driver(/dev/ttyS0);

php 将“向上”传递给用户应用程序,然后是用户应用程序,然后它执行 if else 进行字符串比较,当它为真时将新数据(例如 0xff)传递给驱动程序(dev/ttyS0);

我还写了我的第一个 char 驱动程序,它可以读写。这是我关注的网站http://lwn.net/Kernel/LDD3/

现在的问题是.. 是否可以在驱动程序中打开驱动程序?.. 我知道这样做是非常非常错误的.. 但我想制作自己的驱动程序,在内部进行 if else 比较,所以不需要用户应用程序,因此传递数据就像这样:

PHP - > mydriver(which translates the data like my user app does)..

这是我的用户应用程序代码示例..

int main(int argc,char *argv[])   

{

unsigned char pCom[2][7]={{0xFF,0x01,0x00,0x08,0x00,0x3F,0x48},   
                            {0xFF,0x01,0x00,0x10,0x00,0x3F,0x50}};   


int fd;        
int p;       
    fd=open("/dev/ttyS0",O_RDWR | O_NOCTTY | O_NDELAY);

    if(fd<0) exit(1); 
    set_port(fd);

    if(strcmp(argv[1], "go up")==0){

        for(p=0; p<8; p++){
        write(fd,pCom[0],8);
        }

我怎样才能修改我的代码,以便我可以放入我的字符驱动程序?...例如。修改ssize_t (*read)or ssize_t (*write)? 或者我可以直接在里面写这个module_init(); 你能告诉我我怎么做的样本吗?..

先感谢您..

4

1 回答 1

1

不要那样做。正如您自己指出的那样,这不是应该的方式,我也看不到真正的好处:

好处:

  1. 无需安装用户模式应用程序。

缺点:

  1. 需要安装内核模式驱动程序。
  2. 更新内核时需要更新驱动程序。
  3. 如果驱动程序代码有错误,整个系统就会崩溃。

另一方面,您可能想要创建例如fifo 或tcp 套接字,以便PHP 应用程序可以轻松地与您的用户应用程序通信。其他选择是直接在 PHP 中编写 if-else-code 或作为可以从 PHP 调用的库。

于 2012-08-27T10:30:41.697 回答