我编的一个串口通讯的程序,接收数据的编辑框一直在显示接收到的数据!但是我现在没法按关闭串口的按钮,点一下界面,程序就死掉了,应该是程序一直在接收数据的那段函数里,所以按按钮没有反应!是不是要用多线程编啊?还是用定时器?
渴望稍微详细一点!!!
如果一两句说不清 我的QQ是:15740234
感谢感谢!!

解决方案 »

  1.   

    再开一个线程就可以了,你肯定搞了一个while或者其他的长时间的循环。这样整个程序就象死机了。
      

  2.   


    设计的问题。多线程并不是必须的!在WINDOWS中,串行口通讯分为同步方式和异步方式两种(这里指的是WINDOWS函数调用方式)。同步方式下,当你调用 ReadFile 函数接收数据时,如果数据没有马上接收到,那么函数会发生阻塞,一直阻塞到你设定的时间为止。在阻塞时,窗口界面没有响应。异步方式,调用 ReadFile 函数后马上返回,而后处理是否接收到数据,窗口界面始终有响应。像楼主的问题,可能是多方面的,没看到程序,不敢断定。============================================================================只有了解WINDOWS的运行机制,才能编写出好的程序。多线程,对于初学者来说比较复杂,需要系统的学习和实验一下,只有掌握了才能用到实际的工作当中,比如串行口通讯。因为,多线程涉及到参数的传递,如何正确结束线程等多种问题,初学者一下子可能解决不了。总结:楼主功力还不够,需要快速充电!
      

  3.   

    补充一点:下次串行口的问题可以发到 硬件/系统 专区。两个 COM 不一样。
      

  4.   

    在按下按钮的时候,开一个线程,接收COM口的数据
    简单的做法是COM口接收完数据后,通知应用程序,
      

  5.   

    给 zaodt(至尊宝宝:我就在你身旁,关心永远不打烊!)  的说法注释一下。zaodt提到异步回调的方式,要注意,回调被执行的时候也可能是多线程的,回调可能并非在你窗口的线程里运行,而是在系统分配的线程里运行的,这个时候对于缓冲区的读写也是需要同步机制的。