关于串口的实时通信程序,与串口的通信单独写在一个子线程中。通过SPCOMM与串口的单片机进行交互。在子线程中读取数据是采用定量分批读取。每次从串口读取一定量的数据放在缓冲区,处理完毕后,再次从串口读取,直到没有可以处理的数据。
    在子线程运行过程中(即与串口通信中),如果主线程执行的操作用时不长或数据量不大时,串口通信很正常。子线程可以将所有数据读回,可是当主线程执行的操作用时长(如执行一个很长的循环)或数据量很大(从数据库中读取几千条记录)时,子线程就不能将所有的数据都读回。
  不能理解为什么会出现这样的情况,本人怀疑与内存或SPCOMM有关,可是这方面的知识匮乏,只好请教各位高手了.

解决方案 »

  1.   

    谢谢各位!!
    问题已经解决,问题出在了主线程对CPU时间片的占用时间太长。导致在一定时间内串口收不到单片机发送过来的数据,当这种情况出现在我向单片机发送命令而等待回应时,我就会以单片机没有收到命令码再次发送来处理,当我发送的命令码为清空交互数据的缓冲区时,则会清空还未处理的数据,造成数据丢失。现跟单片机程序开发组协商后,以解决这个问题。谢谢大家!
    散分结贴!