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

mfc下位机如何实现收发数据数据?求指点各位大神
下位机实现的功能:
接收上位机的“A”指令后,向上位机发送“ok”,然后在接收到“A”指令的基础上如果接收到上位机的“B”指令,则想上位机发送数据“xie xie!”。

用的是MSCOMM控件,代码能写在OnCommMscomm1()函数里吗?
下图是我的程序,但不稳定,不正确。麻烦看看问题出现在哪?求指教,万分感谢!
mfc下位机怎么实现收发数据数据?求指点各位大神
mfc下位机怎么实现收发数据数据?求指点各位大神
------解决方案--------------------
串口是单工的,即只能上行或下行,而不能上下并行
MSCOMM控件也是消息驱动吧?
------解决方案--------------------
引用:
串口是单工的,即只能上行或下行,而不能上下并行
MSCOMM控件也是消息驱动吧?

电脑的串口接收和发送是独立的,是全双工的,但是在一般工控应用都做半双工对待
------解决方案--------------------
引用:
下位机实现的功能:
接收上位机的“A”指令后,向上位机发送“ok”,然后在接收到“A”指令的基础上如果接收到上位机的“B”指令,则想上位机发送数据“xie xie!”。

用的是MSCOMM控件,代码能写在OnCommMscomm1()函数里吗?
下图是我的程序,但不稳定,不正确。麻烦看看问题出现在哪?求指教,万分感谢!
mfc下位机怎么实现收发数据数据?求指点各位大神
mfc下位机怎么实现收发数据数据?求指点各位大神


发送一般是一个独立启动,比如通过一个Button激发,按键点击后,put_Output,进入数据发送,一般,下位机需要立即相应接收的数据,回馈上位机,上位机对于下位机的返回数据可以使用几种方式处理
1,在按键代码发送数据后,sleep一小段时间(一般几十ms到1-2百ms),就直接读数据。这种方式处理最简单
2,使用CommEven事件,这是最垃圾的方式(个人认为),因为这个事件除非做了特殊安排,比如安排某个字符作为接收结束字符,否则很难判断接收结束而无法进入处理数据程序
3,创建一个接收线程接收数据,但这仍然有判断数据数据结束的问题,一般可以使用结束字符判断,或者没有新数据到达后若干ms就认为数据结束(因为一般下位机一次发送会将数据发送完)