sailor
驱动牛犊
驱动牛犊
  • 注册日期2002-04-02
  • 最后登录2011-04-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:4704回复:8

请问Linux下有没有虚拟串口的概念?

楼主#
更多 发布于:2004-04-20 09:33
请问Linux下有没有虚拟串口的概念?有的话,怎么实现,有没有例子?
lingzjl
驱动牛犊
驱动牛犊
  • 注册日期2001-10-06
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-20 13:42
具体的讲,你的虚拟串口是完成什么功能的?
超级肥雀
hezhenwei
驱动牛犊
驱动牛犊
  • 注册日期2003-04-16
  • 最后登录2004-05-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-21 11:21
呵呵,有的啊,
如果你了解linux的话,就会知道,linux下的设备都是文件,对设备的操作都是对文件的操作(除了网络设备)
linux下串口也是一个文件,连接到串口的驱动。
而由驱动进行实际的操作。
如果你想做虚拟串口,那就可以去掉实际操作的那部分就可以了。
linux所有程序都有源代码的,你可以从光盘上找到。
sailor
驱动牛犊
驱动牛犊
  • 注册日期2002-04-02
  • 最后登录2011-04-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-22 11:01
我想做一个虚拟串口的驱动,接收用户发来的数据,然后再将这些数据通过我的USB驱动转发到我的USB设备上,当然,读设备信息时方向相反。请问Linux源代码中有没有类似的驱动?我找到了一个usbserial.c文件,看起来似乎就是,但后来发现没有提供读的功能接口,有经验的朋友能指点指点我吗?
lingzjl
驱动牛犊
驱动牛犊
  • 注册日期2001-10-06
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-22 12:59
原来你是想做一个串口转USB的驱动程序。
我觉得有两种方法:
1。完全在驱动程序中完成
2。驱动程序和另外一个进程结合起来

   你要力争让原来的用户的串口应用程序不用作任何修改还能用,也就是说你要保留串口驱动程序中的各个接口,例如用户发IOCTL察看串口状态等的命令,例如用户发命令sendbreak,这些接口你都要保留。
   串口驱动的注册和一般的串口是一样的。串口初始化函数中你实际上要完成你的USB口的初始化。

1。完全在驱动中完成,你把用户write()指令发送到驱动中的数据发向USB口就可以了。

2。你可以引进一个只在内存中存在的设备,这个设备只起一个存贮中间数据的作用。假设这个设备名为dump
在串口驱动中你把用户发到驱动中的数据都写入dump.
另外你再驱动程序初始化后开始一个进程,这个进程一直存在着
,这个进程不断的检查dump中是否有数据,如果有就把dump中的数据发往USB口。
你可以参考:
http://www-900.ibm.com/developerWorks/cn/linux/l-serialnet/index.shtml
连接中的实现的是网口转串口,但是工作方式就是2


超级肥雀
sailor
驱动牛犊
驱动牛犊
  • 注册日期2002-04-02
  • 最后登录2011-04-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-04-23 14:24
谢谢lingzjl,我已经给分了。

另外,如果我用方式1,在串口驱动中实现,我对串口驱动不太熟悉,请问我应该看Linux下的哪几个源码程序?听说Linux下串口驱动的层次比较复杂。


 
lingzjl
驱动牛犊
驱动牛犊
  • 注册日期2001-10-06
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-04-24 10:16
看drivers/char/serial.c
串口驱动有些复杂是因为串口还可以做控制台用,这样就复杂了,你要做的这个没有那么复杂,但是相关的数据结构还是要搞清楚。
超级肥雀
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-04-24 14:39
8250.c
sailor
驱动牛犊
驱动牛犊
  • 注册日期2002-04-02
  • 最后登录2011-04-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-04-26 08:37
非常感谢
游客

返回顶部