usb虚拟串口的bulk in,串口工具能否像使用真实串口被动接后数据?

outmind 2012-07-31 11:30:24
我使用USB的CDC协议,做成的虚拟串口。主机的驱动使用的是windows xp自带的usbser.sys。从PC端发送数据到ARM端,已经实现了。现在的问题是如何实现ARM到PC的数据输入。
我的问题有如下几个:
1.主机何时发送IN令牌包请求从机数据输入?是定时发送IN令牌包,还是需要串口工具触发?
2.一般串口工具在使用串口时,接收数据都是被动接收的(并不需要用户点击读取文件)。如果是主机定时发送IN令牌包,串口工具如何得到接收的数据?(能否想使用真实串口一样?)如果是需要串口工具触发,应该如何触发并得到数据?

ps:到目前为止,我似乎看到虚拟串口可以如同串口一样直接使用,可是我不知道如何的到ARM-->PC的数据。
这些问题困扰了我很久,希望高手现身帮忙,感激不尽!
...全文
435 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
outmind 2012-08-02
  • 打赏
  • 举报
回复
非常感谢Huntercao大力支持啊...

另外如果哪位知道,还希望不吝赐教啊
outmind 2012-08-02
  • 打赏
  • 举报
回复
换了个方法枚举,没有虚拟成串口,直接做成USB,当使用readfile读时,可以触发bulk in,可惜仍然不知道如何让虚拟串口能够bulk in。。。
曹大夯 2012-08-01
  • 打赏
  • 举报
回复
建议拿一个真正的USB串口设备,用bushound或者USB Tracer跟踪一下对应的Serial IN的命令序列。

然后对比你的Serial IN实现,看看有什么地方不一样。
outmind 2012-08-01
  • 打赏
  • 举报
回复
又木有人了,求指导~~~
outmind 2012-07-31
  • 打赏
  • 举报
回复
TO Huntercao:

我实现了Set line code,Get line code,serial state等几个COM口请求。应该不是COM请求的不完整,因为虚拟出来的COM可以完全响应串口工具的任何设置改变。另外,ARM端也没有看到更多的请求命令。

枚举阶段没问题。只是在数据传输阶段,bulk in如何实现呢?
曹大夯 2012-07-31
  • 打赏
  • 举报
回复
你设备的Descriptor是什么样的?从CDC的要求看,用Bulk IN是没问题的。
是不是需要实现一些命令啊?比如RESPONSE_AVAILABLE/GetEncapsulatedResponse之类的命令?

真正的USB Serial是完全实现了COM端口的几个信号线的功能。所以,你的设备需要实现真正的USB Serial的相关信号。

outmind 2012-07-31
  • 打赏
  • 举报
回复
TO Huntercao:
首先谢谢你的回答!

USB从PC到ARM数据用Bulk Out端点实现。
ARM端枚举时,指定了一个bulk out,一个bulk in。但是没有interrupt端点,取而代之的消息通信使用的是control端点。枚举没有任何问题,识别为串口(com4),并且使用普通串口工具下载测试,文件完全正确接收(但是速度仅60KB/s)。

ARM端只能被动等待IN令牌包,我已经将数据事先写入发送buffer,但并没有发现PC发来的IN令牌包。因而不明白PC何时发来bulk in的令牌包获取数据。也不明白串口工具如何得到数据?(串口工具在使用真实串口时,好像是在有数据时,由windows系统告知串口工具的)


曹大夯 2012-07-31
  • 打赏
  • 举报
回复
仔细阅读USB CDC协议。

“从PC端发送数据到ARM端,已经实现了”是通过USB的Bulk OUT Endpoint来实现么?还是通过ENDPOINT 0 CONTROL Endpoint来实现?

ARM端声明对应的BULK IN Endpoint并实现是否就可以实现Serial IN了?
outmind 2012-07-31
  • 打赏
  • 举报
回复
USB 虚拟串口啊,木有人回答啊,自己顶一个啊

21,604

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧