mfc下位机如何实现收发数据数据?求指点各位大神

fenglinhuoshan0 2014-02-13 04:50:15
下位机实现的功能:
接收上位机的“A”指令后,向上位机发送“ok”,然后在接收到“A”指令的基础上如果接收到上位机的“B”指令,则想上位机发送数据“xie xie!”。

用的是MSCOMM控件,代码能写在OnCommMscomm1()函数里吗?
下图是我的程序,但不稳定,不正确。麻烦看看问题出现在哪?求指教,万分感谢!

...全文
284 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2014-02-14
  • 打赏
  • 举报
回复
lz能不能不贴图?
fenglinhuoshan0 2014-02-14
  • 打赏
  • 举报
回复
引用 9 楼 worldy 的回复:
[quote=引用 楼主 u013640882 的回复:] 下位机实现的功能: 接收上位机的“A”指令后,向上位机发送“ok”,然后在接收到“A”指令的基础上如果接收到上位机的“B”指令,则想上位机发送数据“xie xie!”。 用的是MSCOMM控件,代码能写在OnCommMscomm1()函数里吗? 下图是我的程序,但不稳定,不正确。麻烦看看问题出现在哪?求指教,万分感谢!
发送一般是一个独立启动,比如通过一个Button激发,按键点击后,put_Output,进入数据发送,一般,下位机需要立即相应接收的数据,回馈上位机,上位机对于下位机的返回数据可以使用几种方式处理 1,在按键代码发送数据后,sleep一小段时间(一般几十ms到1-2百ms),就直接读数据。这种方式处理最简单 2,使用CommEven事件,这是最垃圾的方式(个人认为),因为这个事件除非做了特殊安排,比如安排某个字符作为接收结束字符,否则很难判断接收结束而无法进入处理数据程序 3,创建一个接收线程接收数据,但这仍然有判断数据数据结束的问题,一般可以使用结束字符判断,或者没有新数据到达后若干ms就认为数据结束(因为一般下位机一次发送会将数据发送完)[/quote] 我把代码发上去,有空能帮我看看吗?能请教吗?我的QQ691503101
worldy 2014-02-14
  • 打赏
  • 举报
回复
引用 楼主 u013640882 的回复:
下位机实现的功能: 接收上位机的“A”指令后,向上位机发送“ok”,然后在接收到“A”指令的基础上如果接收到上位机的“B”指令,则想上位机发送数据“xie xie!”。 用的是MSCOMM控件,代码能写在OnCommMscomm1()函数里吗? 下图是我的程序,但不稳定,不正确。麻烦看看问题出现在哪?求指教,万分感谢!
发送一般是一个独立启动,比如通过一个Button激发,按键点击后,put_Output,进入数据发送,一般,下位机需要立即相应接收的数据,回馈上位机,上位机对于下位机的返回数据可以使用几种方式处理 1,在按键代码发送数据后,sleep一小段时间(一般几十ms到1-2百ms),就直接读数据。这种方式处理最简单 2,使用CommEven事件,这是最垃圾的方式(个人认为),因为这个事件除非做了特殊安排,比如安排某个字符作为接收结束字符,否则很难判断接收结束而无法进入处理数据程序 3,创建一个接收线程接收数据,但这仍然有判断数据数据结束的问题,一般可以使用结束字符判断,或者没有新数据到达后若干ms就认为数据结束(因为一般下位机一次发送会将数据发送完)
worldy 2014-02-14
  • 打赏
  • 举报
回复
引用 1 楼 ouyh12345 的回复:
串口是单工的,即只能上行或下行,而不能上下并行 MSCOMM控件也是消息驱动吧?
电脑的串口接收和发送是独立的,是全双工的,但是在一般工控应用都做半双工对待
许文君 2014-02-14
  • 打赏
  • 举报
回复
引用 4 楼 u013640882 的回复:
[quote=引用 3 楼 xuddk727 的回复:] 你的下位机是什么东西?
数据采集,并发送给上位机,可以用定时器来做吗?[/quote] 应该可以,不太确定,你的串口是双工的吗
fenglinhuoshan0 2014-02-14
  • 打赏
  • 举报
回复
引用 2 楼 oyljerry 的回复:
查看一下数据接收发送顺序
通信用定时器来做好吗?还是用上图的消息驱动好啊?
fenglinhuoshan0 2014-02-14
  • 打赏
  • 举报
回复
引用 1 楼 ouyh12345 的回复:
串口是单工的,即只能上行或下行,而不能上下并行 MSCOMM控件也是消息驱动吧?
嗯,是写在消息驱动里好点,还是使用定时器好点啊?
fenglinhuoshan0 2014-02-14
  • 打赏
  • 举报
回复
引用 3 楼 xuddk727 的回复:
你的下位机是什么东西?
数据采集,并发送给上位机,可以用定时器来做吗?
许文君 2014-02-13
  • 打赏
  • 举报
回复
你的下位机是什么东西?
oyljerry 2014-02-13
  • 打赏
  • 举报
回复
查看一下数据接收发送顺序
ouyh12345 2014-02-13
  • 打赏
  • 举报
回复
串口是单工的,即只能上行或下行,而不能上下并行 MSCOMM控件也是消息驱动吧?

3,245

社区成员

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

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