又見鬼了。
原來是單片机給PC發送數据要在每發送一個字節后插入延時.在PC端才能逐個收到數据.
現在是PC給單片机發送數据也的在每發送一個字節后插入延時.在單片机端才能逐個收到數据.
單片机是以接收中斷接收數据的.如果不加延時. 會掉數据.好像是單片机接收數据的識別太慢了.

解决方案 »

  1.   

    同感,我原来做的一个东东在VB环境中可以单步运行,和单片机通迅也没有问题。但是生成EXE后就不行了,搞了半天都不知问题出在哪。后来我加了延时程序后,就没有这个问题了。
      

  2.   

    延时?你用的是查询法读取串口的吗?鉴于串口的速度,当然要延时才能收到所有数据了。我建议使用中断法。  PC端的编程倒好办一点,设置RThreshold,如果单片机传过来的数据字长不定的话,加上无用的,使其保持字长一致,这样,只有PC机接收到RThreshold个字节时,才会产生中断。  单片机端也是一样,一次接收中断就把数据存入一个数组中,当接收到你要的那么多字节时再去干你的事。
      

  3.   

    想法不錯. 我單片机采用中斷接收. 查詢發送. 半雙工通訊. 為節省資源BCD碼收發.
    事實証明. 如果PC一次灌入一串數据的話. 單片机肯定無法正确接收.校驗出錯.
    pc也是一樣. 不過我倒是沒有試RThreshold..等下去試.如果单片机传过来的数据字长不定的话,加上无用的
    --------------> 不懂您的意思. 能否詳細解釋.
      

  4.   

    一段VB代码实现mscomm读取数,转换用DP+spcomm怎么写呀
    http://community.csdn.net/Expert/topic/3486/3486032.xml?temp=.5334131