你的m_csCommunicationSync好像没有保护什么数据啊?去掉进程同步看一下。
其实这种做法就是把程序尽量瘦身,看看问题究竟在哪里?

解决方案 »

  1.   

    串口一直都有数据可以收吗?没有数据的话ReadFile会阻塞啊,你每次收完都PurgeComm清空缓冲区数据了,除非在你调用PurgeComm又有新数据到达,不然绝对要在ReadFile阻塞。另外你用临界区限制了不能同时读写,一旦ReadFile阻塞了,你的WriteData函数在EnterCriticalSection时肯定就阻塞了,如果你的串口设备要等到你发给它一个数据,才会再给你发数据,那么肯定就死锁了。串口是双工的,收和发不是一条线的,你用不着也不能这样使用临界区。
      

  2.   

       各位大侠,有谁知道我该怎么尽可能快的发送数据么? 我发送的是一条指令,然后等待返回结果,再发送下一条指令。 急  急  急  急  急  急!!!  我改过了波特率,我用的是API ,我用COMSTAT 实例也不行,我该怎么用api实现 它那个ONComm()事件啊,或者其它方法????
      

  3.   

    我也遇到这样的问题,我用的CSerialPort类,但是如果使用主板自带的串口好像就不会,我用PCI转串口就会在writefile 阻塞,自能重启,求助如何解决!