就用 bus hound 把数据保存下来吧!你这大半夜的不睡觉

解决方案 »

  1.   

    但是bus hound不能自动保存数据,只能手动点save然后指定一个文件来保存,而且我希望是保存成我想要的格式,去掉通讯数据中的一些头和尾之类的。最好就是做一个exe后台记录,悄无声息
      

  2.   

    bus hound 是不是挂载了一个过滤驱动来捕获IRP的,那么bus hound仍然会影响到通讯的效率。 
    可以在驱动中开一个记录线程 开辟一块缓存, 有数据传输时 将数据记录下来, 线程就慢慢写文件了。只是拷贝一些数据 是很快的
      

  3.   

    在驱动中开一个记录线程?太高端了吧另外貌似开线程也不好记,因为我现在才发现那个封装的USB类被用来生成了一个lib库,然后程序是用lib库来通讯的。
      

  4.   

    那你们和驱动通信的接口是不是在 封装的lib中。 没有源码吗, 有源码自己改, 方法一样的
      

  5.   

    既然是写log,那就开线程单独写好了
      

  6.   

    lib库中开线程怎么操作?lib库有源码
      

  7.   

    开一个循环缓冲区,开启一个通信线程A,该线程不断的将数据写到缓冲区的尾部,使用一个尾部指针记录最后写的位置
    开启一个线程B,从缓冲区中读出数据并保存,使用一个当前头指针指示未读的开始位置A不断写入缓冲区,B不断的读出缓冲区,因为缓冲区是循环的,应该可以无限的进行下去。限制是读出的速度必须必写入快,否则缓冲区数据可能会被覆盖
      

  8.   

    大致明白了,操作起来还得试一下。现在主要问题就是如何在lib库中开线程,因为程序是多处用到此lib库,那要多处开线程的话又麻烦了,涉及到同步之类的问题
      

  9.   

    原来程序里面的其他线程你都不用管了  一个线程写数据 一个线程读数据 相对来说控制不麻烦   lib嘛 没用过,
      

  10.   

    大致明白了,操作起来还得试一下。现在主要问题就是如何在lib库中开线程,因为程序是多处用到此lib库,那要多处开线程的话又麻烦了,涉及到同步之类的问题
    你可以不放到lib,专门搞一个模块来写数据等,lib只是调用,这样lib就不会被影响。相当于一个单独的日志模块类似
      

  11.   

    可以就直接UDP发送到当地的一个端口,另一个程序读取写文件