我用VC编写上位机软件通过USB和硬件电路板通讯,不用编写驱动和固件程序(同事来做)。主要用createfile和deviceiocontrol函数, 我的理解是USB收发不能同时吧?所以只能把接收另起一个线程来实现对么?或者用单线程实现接收和发送的话有没有不冲突的办法?本人对多线程不熟悉。

解决方案 »

  1.   

    USB本身是全双工的,至于你程序里要一边写,一边读,就需要开辟两个线程去分别做。
      

  2.   

    单线程不能解决么?还有因为我同事的板子没做好,我没有办法调试,想通过U盘来测试一下,主要用deviceiocontrol函数来读写。比如我往U盘里写一个数据怎么能在U盘中验证我写进去了?还有如何验证我接收到的USB数据正确?也就是在没有板子的情况下如何调试,谢谢
      

  3.   

    单线程不能解决么?还有因为我同事的板子没做好,我没有办法调试,想通过U盘来测试一下,主要用deviceiocontrol函数来读写。比如我往U盘里写一个数据怎么能在U盘中验证我写进去了?还有如何验证我接收到的USB数据正确?也就是在没有板子的情况下如何调试,谢谢
      

  4.   

    我们的解决方案是:控制命令在主线程里完成就可以了,因为速度很快,不会造成界面操作的滞待。下载或上传数据就用多线程,毕竟这个需要耗费一定的时间。至于你用U盘来调试测试USB通信,我认为是不可行的。因为U盘处理数据的方法恐怕与上位机与底层通信不一样,可以用软件bushound来查看下发和上传的数据
      

  5.   


    写完再读啊,你能不能不用U盘,换个类似USB-串口这种方便回读的
      

  6.   

    我觉得用USB-RS232转换器可以简单调试,让你可以摸索USB上位机程序如何编,但是并不能用这个来调试你的最终版程序,或者说这样调试不太合适,因为转发器和真正的USB程序还是有区别的
    另外,USB应该是半双工的,需不需要建立辅助线程关键看你是否介意在接收或者发送大文件时界面会停滞,如果你不介意的话,那就完全可以一个线程,这样的话让读/写操作顺序执行就可以了
      

  7.   


    您的意思就是说不用底层电路板用软件bushound就可以调试了,我主要调用USB发出的和接收到的数据是否正确