我现在用serialport这个类做的传送数据的程序。但看了一下龚建伟的书全都是异步的,
我想实现同步的怎么做呢。程序的功能简单说明下就是,我向一台机器发出一个数据,然后这个数据收到数据后会返回一个数据告诉我他已经收到了。并且如果他在一段时间内没收到的话这个程序给我发出error信息。望指教

解决方案 »

  1.   

    同步的最简单啊,发出去sleep个1ms 然后读接受缓冲区,缓冲区空的话就是超时,有就读
      

  2.   

    个人理解,所谓同步是需要第三根clock线支持的,PC和单片机只有2根线RxTx,所以没发做到同步的
      

  3.   


    那大概就是我的理解是错误的,我想实现的就是我向一台机器发出一个数据,然后这个数据收到数据后会返回一个数据告诉我他已经收到了。并且如果他在一段时间内没收到的话这个程序给我发出error信息。望指教 
      

  4.   

    这个不叫同步通信,上位机和下位机各自有各自的clock源,他们之间的通信只有两根线TxRx,如果上位机和下位机有第三根clock线,那他们就是同步通信
      

  5.   

    串口同步通信指的是在同步执行时,线程会被阻塞,函数直到执行操作完成后才返回,导致程序的执行效率下降。而在异步执行时,即使操作还未完成,调用的函数也会立即返回,费时的I/O操作在后台执行,这样线程就可以做其它的事情,从而提高了执行效率。通过writefile 和readfile的最后一个参数控制的,参考二楼做法。
      

  6.   


    用sleep做timeout我知道,但是这个writefile 怎么写的我想问下。因为之前我是用第三方类实现的。麻烦问下有没有具体例子。
      

  7.   

    用sleep做timeout我知道,但是这个writefile 怎么写的我想问下。因为之前我是用第三方类实现的。麻烦问下有没有具体例子。
    你看一下是不是你想要的:
    file://192.168.10.3/%E7%A0%94%E5%8F%91%E9%83%A8%E9%97%A8/03%E4%BA%A7%E5%93%81%E7%A0%94%E5%8F%91%E9%83%A8/05%E6%B5%8B%E8%AF%95%E7%A0%94%E7%A9%B6%E5%AE%A4%E5%B7%A5%E4%BD%9C%E7%BB%84/03%E7%9F%A5%E8%AF%86%E6%8A%80%E6%9C%AF%E4%BA%A4%E6%B5%81/00%E5%9F%B9%E8%AE%AD/%E5%86%85%E9%83%A8%E5%9F%B9%E8%AE%AD/2013%E5%B9%B4%E5%9F%B9%E8%AE%AD%E8%B5%84%E6%96%99/%E7%AB%AF%E5%8F%A3%E7%BC%96%E7%A8%8B%E5%9F%B9%E8%AE%AD%E8%AF%BE%E4%BB%B6/%E5%BC%82%E6%AD%A5%E9%87%8D%E5%8F%A0%E6%93%8D%E4%BD%9C%E4%B9%8B%E4%B8%B2%E5%8F%A3%20-%20BLoodMaster%20-%20%E5%8D%9A%E5%AE%A2%E5%9B%AD.htm
      

  8.   


    用sleep做timeout我知道,但是这个writefile 怎么写的我想问下。因为之前我是用第三方类实现的。麻烦问下有没有具体例子。上边发错了:
    http://www.cnblogs.com/BLoodMaster/archive/2011/11/09/2242259.html
      

  9.   


    用sleep做timeout我知道,但是这个writefile 怎么写的我想问下。因为之前我是用第三方类实现的。麻烦问下有没有具体例子。上边发错了:
    http://www.cnblogs.com/BLoodMaster/archive/2011/11/09/2242259.html
    谢谢我看了下,现在我尝试下。谢谢