allaz
驱动牛犊
驱动牛犊
  • 注册日期2004-05-27
  • 最后登录2004-07-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1150回复:5

请教块传输时数据长度的问题

楼主#
更多 发布于:2004-07-08 09:03
我现在开发的系统使用的是uClinux系统,需要自己写USB的主控制器驱动程序(主控制器采用的是SL811HS)。在此过程中遇到的问题是进行块传输时,如果采用的数据载荷是64字节,那么如果设备只需要发送20字节的数据,则SL811HS收到的也将会是一个64字节的数据包(20自己以后全为0),从而无法判断到底应接收的数据长度。请问此问题怎样可以解决,谢谢。
jiangyiyong
驱动大牛
驱动大牛
  • 注册日期2002-11-28
  • 最后登录2004-08-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-08 17:29
不会吧,你在接收数据之前不是要设置数量的吗?
我来自中国 抵制日货
allaz
驱动牛犊
驱动牛犊
  • 注册日期2004-05-27
  • 最后登录2004-07-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-08 21:50
当采用64字节的payload发送16字节的数据时,在主机端设置读入的数据长度为16时可正常读到数据,而当设置读入的数据长度大于16而小于64时仍可正常返回,只是最初16个字节之后的内容全为0。所以当主机端没有预先知道设备将要发送的数据长度时似乎是无法控制读入数据长度的。不知道是不是还有什么我没有注意到的地方,希望大家多多指导。
jiangyiyong
驱动大牛
驱动大牛
  • 注册日期2002-11-28
  • 最后登录2004-08-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-09 08:15
当采用64字节的payload发送16字节的数据时,在主机端设置读入的数据长度为16时可正常读到数据,而当设置读入的数据长度大于16而小于64时仍可正常返回,只是最初16个字节之后的内容全为0。所以当主机端没有预先知道设备将要发送的数据长度时似乎是无法控制读入数据长度的。不知道是不是还有什么我没有注意到的地方,希望大家多多指导。


主机端怎么会不知道要收多少数据呢,所有的请求都是由主机发起的,设备端只是被动的。
我来自中国 抵制日货
Filippo
驱动牛犊
驱动牛犊
  • 注册日期2004-03-11
  • 最后登录2004-08-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-09 08:39

主机端怎么会不知道要收多少数据呢,所有的请求都是由主机发起的,设备端只是被动的。


我也遇到了相似的问题。
由于设备端是采集数据,所以主机不知道数据的容量。
假设我现在设定的主机接收缓冲区是1024字节,最后一包数据只有256个(或者是其他小于512字节的数据),怎么办?
jiangyiyong
驱动大牛
驱动大牛
  • 注册日期2002-11-28
  • 最后登录2004-08-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-09 13:44
[quote]
主机端怎么会不知道要收多少数据呢,所有的请求都是由主机发起的,设备端只是被动的。


我也遇到了相似的问题。
由于设备端是采集数据,所以主机不知道数据的容量。
假设我现在设定的主机接收缓冲区是1024字节,最后一包数据只有256个(或者是其他小于512字节的数据),怎么办? [/quote]

你能不能自己在主机端和设备端定制一套协议,比如主机先得到下个包的长度,再接收数据
我来自中国 抵制日货
游客

返回顶部