+ -
当前位置:首页 → 问答吧 → 【原创】ioctl的问题

【原创】ioctl的问题

时间:2005-07-25

来源:互联网

我用usb模拟了一个串行通讯接口{/dev/usb_tty},但是不很完整,但我在做ppp运行的时候,pppd会给我出错的信息:
  tcgetattr: Unknown error 515(515)

  其他的ioctl调用也不行,因为压根就没有那些ioctl的调用值,高手有什么意见,我想将他做成一个通用的串口,基于它实现串口所能实现的所有功能。      

作者: sunfish   发布时间: 2005-07-25

需要一个硬件来转换吧      

作者: AIKO_sex   发布时间: 2005-07-25

硬件? USB-Serial的转换器?
  这个相当于用软件基于usb的硬件实现了serial的功能,我觉得还是要做软件改造。
  不过,非常感谢AIKO_sex的回答,你能讲讲你的具体方案吗?      

作者: sunfish   发布时间: 2005-07-26

我觉得serial和usb传输数据方式可能不一样,用软件无法实现

serial可能用波特率,传输位宽和usb的频率和位宽都不是一个级别的也不匹配,这之间可能需要硬件转化      

作者: AIKO_sex   发布时间: 2005-07-26

物理上来讲肯定要用USB的硬件和USB的规范,我觉得可以基于USB的协议规则,做出一个虚拟的serial的协议来。我见过一个实现的实例:
物理上只有一个usb电缆,但是windows上,我能够看到它所模拟出来的com端口,可以通过这个com端口传送标准的at指令。
  只是在linux上的serial不是标准的tty设备类,有些困惑。      

作者: sunfish   发布时间: 2005-07-26

你能确定仅仅是usb电缆么,有的制造很精细,转换的cable已经做进去了      

作者: AIKO_sex   发布时间: 2005-07-26

[QUOTE=AIKO_sex]你能确定仅仅是usb电缆么,有的制造很精细,转换的cable已经做进去了[/QUOTE]

   绝对没有问题,我数码相机上用的那根直接拿来用的。

   引用:(Stuart Lynne (April 15, 2002))
   A second important point about USB is that it implements a (usually reliable) data transport layer between the USB Host and the various USB Devices that are attached to it. But there is no specific device model, such as a serial or printer port, NIC, CDROM, etc., implemented by USB. Instead each USB Device implements a function that talks to a driver on the USB Host, that knows what the USB Function does (e.g. a serial or printer port, NIC, CDROM, etc.).

    重要的一点是USB执行了Host和device之间的数据传输层,但是没有指定通过USB执行的device模型(例如:串口,打印机,网络等)。也就是说,每一个执行一定功能的,同Host上的驱动沟通的USB设备自己知道自己做什么。

  从这个大师的话里,实现串口应该没有问题。关键是,你所说的硬件,应该用软件也可以实现的吧!从windows的观点来看,他认为插入了usb的串口设备,调用相应的驱动程序。设备则用基于USB的串口协议来和windows对话,实现上应该没有问题的。      

作者: sunfish   发布时间: 2005-07-26

其实,这个没有任何问题的。您可以把任何流式接口封装成串口。您可以参考一下相关的代码。在usb 线上模拟网络,串口的软件(Linux)网上应该有不少。我2年前就搞个这个玩意。并没有什么特别高深的。主要是您的模拟接口要正确。      

作者: 风雪狂客   发布时间: 2005-07-28

谢谢斑竹的回答
我遇到的是,当我对这个基于usb的serial编程的时候,他好像不支持tty层的ioctl
  TIOCEXCL
  出现的错误是:
  Couldn't make tty exclusive:Unknown error 515
  我感觉是tty层的ioctl压根就没有调到,斑竹有什么好的建议,可以让这个ioctl正确的执行吗?      

作者: sunfish   发布时间: 2005-08-04