阅读:4704回复:8
请问Linux下有没有虚拟串口的概念?
请问Linux下有没有虚拟串口的概念?有的话,怎么实现,有没有例子?
|
|
沙发#
发布于:2004-04-20 13:42
具体的讲,你的虚拟串口是完成什么功能的?
|
|
|
板凳#
发布于:2004-04-21 11:21
呵呵,有的啊,
如果你了解linux的话,就会知道,linux下的设备都是文件,对设备的操作都是对文件的操作(除了网络设备) linux下串口也是一个文件,连接到串口的驱动。 而由驱动进行实际的操作。 如果你想做虚拟串口,那就可以去掉实际操作的那部分就可以了。 linux所有程序都有源代码的,你可以从光盘上找到。 |
|
地板#
发布于:2004-04-22 11:01
我想做一个虚拟串口的驱动,接收用户发来的数据,然后再将这些数据通过我的USB驱动转发到我的USB设备上,当然,读设备信息时方向相反。请问Linux源代码中有没有类似的驱动?我找到了一个usbserial.c文件,看起来似乎就是,但后来发现没有提供读的功能接口,有经验的朋友能指点指点我吗?
|
|
地下室#
发布于: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 |
|
|
5楼#
发布于:2004-04-23 14:24
谢谢lingzjl,我已经给分了。
另外,如果我用方式1,在串口驱动中实现,我对串口驱动不太熟悉,请问我应该看Linux下的哪几个源码程序?听说Linux下串口驱动的层次比较复杂。 |
|
6楼#
发布于:2004-04-24 10:16
看drivers/char/serial.c
串口驱动有些复杂是因为串口还可以做控制台用,这样就复杂了,你要做的这个没有那么复杂,但是相关的数据结构还是要搞清楚。 |
|
|
7楼#
发布于:2004-04-24 14:39
8250.c
|
|
8楼#
发布于:2004-04-26 08:37
非常感谢
|
|