用serialport类实现同步接受数据

kuroro 2013-10-16 12:52:13
我现在用serialport这个类做的传送数据的程序。但看了一下龚建伟的书全都是异步的,
我想实现同步的怎么做呢。

程序的功能简单说明下就是,我向一台机器发出一个数据,然后这个数据收到数据后会返回一个数据告诉我他已经收到了。并且如果他在一段时间内没收到的话这个程序给我发出error信息。

望指教
...全文
492 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuroro 2013-10-17
  • 打赏
  • 举报
回复
引用 8 楼 drlsdrls 的回复:
[quote=引用 6 楼 u010316743 的回复:] [quote=引用 5 楼 drlsdrls 的回复:] 这个不叫同步通信,上位机和下位机各自有各自的clock源,他们之间的通信只有两根线TxRx,如果上位机和下位机有第三根clock线,那他们就是同步通信
谢谢我知道了,那你能告诉我,我这个应该怎么做吗?有具体的例子吗[/quote] 我想你说的同步(线程的控制)和我说的同步(物理层的通信)不是一回事情,不好意思[/quote] 不用,谢谢你。
kuroro 2013-10-17
  • 打赏
  • 举报
回复
引用 7 楼 ohyeszq 的回复:
串口同步通信指的是在同步执行时,线程会被阻塞,函数直到执行操作完成后才返回,导致程序的执行效率下降。而在异步执行时,即使操作还未完成,调用的函数也会立即返回,费时的I/O操作在后台执行,这样线程就可以做其它的事情,从而提高了执行效率。 通过writefile 和readfile的最后一个参数控制的,参考二楼做法。
用sleep做timeout我知道,但是这个writefile 怎么写的我想问下。因为之前我是用第三方类实现的。麻烦问下有没有具体例子。
drlsdrls 2013-10-17
  • 打赏
  • 举报
回复
引用 6 楼 u010316743 的回复:
[quote=引用 5 楼 drlsdrls 的回复:] 这个不叫同步通信,上位机和下位机各自有各自的clock源,他们之间的通信只有两根线TxRx,如果上位机和下位机有第三根clock线,那他们就是同步通信
谢谢我知道了,那你能告诉我,我这个应该怎么做吗?有具体的例子吗[/quote] 我想你说的同步(线程的控制)和我说的同步(物理层的通信)不是一回事情,不好意思
ohyeszq 2013-10-17
  • 打赏
  • 举报
回复
串口同步通信指的是在同步执行时,线程会被阻塞,函数直到执行操作完成后才返回,导致程序的执行效率下降。而在异步执行时,即使操作还未完成,调用的函数也会立即返回,费时的I/O操作在后台执行,这样线程就可以做其它的事情,从而提高了执行效率。 通过writefile 和readfile的最后一个参数控制的,参考二楼做法。
kuroro 2013-10-17
  • 打赏
  • 举报
回复
引用 5 楼 drlsdrls 的回复:
这个不叫同步通信,上位机和下位机各自有各自的clock源,他们之间的通信只有两根线TxRx,如果上位机和下位机有第三根clock线,那他们就是同步通信
谢谢我知道了,那你能告诉我,我这个应该怎么做吗?有具体的例子吗
drlsdrls 2013-10-17
  • 打赏
  • 举报
回复
这个不叫同步通信,上位机和下位机各自有各自的clock源,他们之间的通信只有两根线TxRx,如果上位机和下位机有第三根clock线,那他们就是同步通信
kuroro 2013-10-17
  • 打赏
  • 举报
回复
引用 3 楼 drlsdrls 的回复:
个人理解,所谓同步是需要第三根clock线支持的,PC和单片机只有2根线RxTx,所以没发做到同步的
那大概就是我的理解是错误的,我想实现的就是我向一台机器发出一个数据,然后这个数据收到数据后会返回一个数据告诉我他已经收到了。并且如果他在一段时间内没收到的话这个程序给我发出error信息。 望指教
drlsdrls 2013-10-17
  • 打赏
  • 举报
回复
个人理解,所谓同步是需要第三根clock线支持的,PC和单片机只有2根线RxTx,所以没发做到同步的
kuroro 2013-10-17
  • 打赏
  • 举报
回复
引用 1 楼 sunnyloves 的回复:
同步的最简单啊,发出去sleep个1ms 然后读接受缓冲区,缓冲区空的话就是超时,有就读
有没有例子可以让我参看下啊?我这个第一次看谢谢啊
kuroro 2013-10-17
  • 打赏
  • 举报
回复
引用 12 楼 ohyeszq 的回复:
[quote=引用 9 楼 u010316743 的回复:] [quote=引用 7 楼 ohyeszq 的回复:] 串口同步通信指的是在同步执行时,线程会被阻塞,函数直到执行操作完成后才返回,导致程序的执行效率下降。而在异步执行时,即使操作还未完成,调用的函数也会立即返回,费时的I/O操作在后台执行,这样线程就可以做其它的事情,从而提高了执行效率。 通过writefile 和readfile的最后一个参数控制的,参考二楼做法。
用sleep做timeout我知道,但是这个writefile 怎么写的我想问下。因为之前我是用第三方类实现的。麻烦问下有没有具体例子。[/quote] 上边发错了: http://www.cnblogs.com/BLoodMaster/archive/2011/11/09/2242259.html[/quote] 谢谢我看了下,现在我尝试下。谢谢
ohyeszq 2013-10-17
  • 打赏
  • 举报
回复
引用 9 楼 u010316743 的回复:
[quote=引用 7 楼 ohyeszq 的回复:] 串口同步通信指的是在同步执行时,线程会被阻塞,函数直到执行操作完成后才返回,导致程序的执行效率下降。而在异步执行时,即使操作还未完成,调用的函数也会立即返回,费时的I/O操作在后台执行,这样线程就可以做其它的事情,从而提高了执行效率。 通过writefile 和readfile的最后一个参数控制的,参考二楼做法。
用sleep做timeout我知道,但是这个writefile 怎么写的我想问下。因为之前我是用第三方类实现的。麻烦问下有没有具体例子。[/quote] 上边发错了: http://www.cnblogs.com/BLoodMaster/archive/2011/11/09/2242259.html
ohyeszq 2013-10-17
  • 打赏
  • 举报
回复
引用 9 楼 u010316743 的回复:
[quote=引用 7 楼 ohyeszq 的回复:] 串口同步通信指的是在同步执行时,线程会被阻塞,函数直到执行操作完成后才返回,导致程序的执行效率下降。而在异步执行时,即使操作还未完成,调用的函数也会立即返回,费时的I/O操作在后台执行,这样线程就可以做其它的事情,从而提高了执行效率。 通过writefile 和readfile的最后一个参数控制的,参考二楼做法。
用sleep做timeout我知道,但是这个writefile 怎么写的我想问下。因为之前我是用第三方类实现的。麻烦问下有没有具体例子。[/quote] 你看一下是不是你想要的: 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
洗洗睡去 2013-10-16
  • 打赏
  • 举报
回复
同步的最简单啊,发出去sleep个1ms 然后读接受缓冲区,缓冲区空的话就是超时,有就读

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧