1、串口编程,异步和同步的选择各自有什么优点?
2、异步读串口的时候(此时没有利用多线程编程),为什么单步调试的时候可以实现,加入死循环就卡住了,换了同步的也是同样情况。
3、利用多线程编程时,也是这种情况,执行一次可以实现成功读取,假如死循环就不行了,又死了
4、利用多线程实现异步编程时在子线程中调用readfile函数,每次读取的时候是一个一个读取,还是一串一串读取好,一串一串读取,每次读取数据的长度都不一样(这里我在调试的时候,调试软件是周期发送数据,是否有影响)
5、今天在打开串口、设置串口后,还发生了串口号突然就变成0X000000的情况,是否和线程时间片到了有关呢?
由于单位保密查的比较紧,把程序拷出来不方便,先这样吧,刚学vc++不久,求教!

解决方案 »

  1.   

    1.
    异步读是能省点时间,缺点是同步有点难;同步读是浪费点时间(对于大多数应用不影响),优点是同步简单,
    2.
    2和3的情况要加入超时设置,当在一定时间没有收到数据或没有收完数据后就超进退出,等待下一次的读数据.
    4.因为现在是WINDOW系统,硬件接收到的数据都放在缓冲区里(可以看作类似同步硬件读限数据,同步通知你已有数据了),所以你收数据时要先读限缓冲区里的数据字节数,然后按缓冲区里的数据字节数来一次读完.
    5.
    串口的设置一次就可以了,不需要多次设置,在设置后再运行线程,不然先运行线程再设置串口可能会出问题
      

  2.   

    非常感谢各位的回复,今天我再试了下,其实是在用memset清空每次接受的字符数组的时候,和数组初始化时的大小不一致,造成的,感觉编程出现这种低级错误还是很沮丧的!
    我第一次在这儿发帖,还有这么多人给我回复,很感激你们,串口传输部分我已经编好了,后面我会继续努力的!谢谢大家