阅读:1311回复:5
缺乏整体概念,d12的固件里那一部分是能主动发数据的
假如我想用d12主动向主机发数据该如何实现啊,难道直接想d12的缓冲区里写就行了?
还有我刚知道分是要自己给的不是系统自动,向帮我解答过问题的高手们致歉 呜呜,没人理我是不是我问的问题太弱了? [编辑 - 3/23/04 by sirenfox] |
|
沙发#
发布于:2004-03-24 11:18
USB和串口的差别很大:
1. USB实现了物理连接和协议层,而串口只到数据链路层。 2. USB基于包交换,而串口基于流。 3. USB总线支持多设备连接,他们共享带宽,而串口只支持单设备,多设备只能采用额外的422或485扩展。 4. USB与设备通信采用的是查询方式,而串口采用的是流控制,可以做成中断方式。(当然它们在PC总线上都是中断方式) 所以,当采用D12作USB Device时,要注意: 只能由上位机主发IN请求,而且最好下位机已经准备好了数据。(有两个原因要求这样:1。只有这样,速度才会快;2。IN中断的发出不是由IN请求触发的,而是由上一次IN数据包结束触发的,这有点像51中TXD中断触发TI一样。) 不能期望带宽和通信速率是固定不变的,如果你对之要求很高,应在使用手册中指明:该设备不能同时与其他USB设备同时使用。 |
|
|
板凳#
发布于:2004-03-23 22:38
不能主动发数据,因为USB设备是完全受控于主机的,只有主机发送命令后设备才能对主机做响应,所以不能主动发!
|
|
地板#
发布于:2004-03-23 21:03
周立共使用的是中断方式。你可以看看他的端点描述符就知道了。
所谓中断方式本质就是HOST隔一段时间就查询一次。这时间同样在描述符设置。你想搞所谓实时采集可以考虑把查询时间设短一点。 谢谢你给我的分。其实象征性给一分我也很高兴。哈哈 |
|
地下室#
发布于:2004-03-23 15:57
那主机什么时候发in包呢,是不是只有在应用程序中才能使host发in包,还是host隔一段时间就发呢?那我外部设备采集的不连续数据就不能通过usb让主机实时处理了?
周立功的书上的例子是用那种方式传输的呢 没有能主动发数据的.就是说不象RS232或别的通信接口那样只要你 写数据PC就能收到. 你要往D12写数据,并输入缓冲区满的命令.这样当主机发出IN包你的数据就能发出去. 当然以上工作都必须在成功进行设备列举后才能进行. [编辑 - 3/23/04 by sirenfox] |
|
5楼#
发布于:2004-03-23 15:51
没有能主动发数据的.就是说不象RS232或别的通信接口那样只要你
写数据PC就能收到. 你要往D12写数据,并输入缓冲区满的命令.这样当主机发出IN包你的数据就能发出去. 当然以上工作都必须在成功进行设备列举后才能进行. |
|