解决方案 »

  1.   

    你当串口是什么?
    即使你采用tcp协议,也不可能把一个大文件整个一个包发出去,接收端直接收一个文件
    如果是tcp,你需要将文件拆成许多个包,接收后再重新拼接
    而如果是串口,你也需要先将文件拆成许多个包,然后每个包依次发送字节,接收端收到字节,重新组包,再收下一组不管用哪种方式,都不要想发送一次,接收一次,就可以.
      

  2.   


    多谢您指点,实际应用起来您的建议很对。目前我只是测试用byte写入文件的原理,测试的doc文件只有9k(内容只有18个字符),麻烦您看下,为什么我这样不能在接收端成功生成文件?
      

  3.   

    如果你是tcp,9k确实可以一个包直接传过去
    底层已经封装好方法,直接读取就可以把缓冲区中的数据一次性读取出来但是你是串口,串口是一个字节一个字节发送的,你也要循环接收,直到一定时间内串口缓冲区不再有数据为止
      

  4.   

    或者你给串口接收挂一个回调事件,等串口接到数据后会自动调用你的receive事件
    这样不用另开线程阻塞等待
    但是也不能保证只接收一次就接收到完整的信息
      

  5.   

    看不出有什么问题,在fs.Write后面加上一句fs.Flush()试下。