我现在要用PC的串口和单片机进行通信,在PC上利用VC来做一个基于对话框的应用程序界面。界面上主要有两个按钮,一个control,向单片机发送控制命令,将界面上编辑框中的数据通过串口传递到单片机,实现对单片机的控制。另一个按钮是inquire,向单片机发送查询命令,将单片机中特定的数据发送给PC。
我本来打算用MSComm控件,但是不知道该怎么实现PC和单片机的握手。比如,点击按钮control,PC和单片机要首先进行握手,成功后PC再向单片机发送控制命令和数据。握手是PC向单片机发送一个特定的数据(数据1),如果单片机能正确接收,则向PC发送另一个特定数据(数据2),PC根据接收到的数据是否为数据2来判断握手是否成功,如果不成功则再发送数据1,等待单片机的响应。如果连续3次都不成功,则弹出控制失败的窗口。
现在的问题是PC重复发送数据1这个循环应该怎么写呢,如果写在按钮control的消息响应函数里,而判断握手成功需要根据串口接收的数据来判断,那么按钮control的消息响应函数中就要用到MSComm的消息响应了。这样可以吗?或者有什么别的方法吗,例如使用API串口通信函数。
我本来打算用MSComm控件,但是不知道该怎么实现PC和单片机的握手。比如,点击按钮control,PC和单片机要首先进行握手,成功后PC再向单片机发送控制命令和数据。握手是PC向单片机发送一个特定的数据(数据1),如果单片机能正确接收,则向PC发送另一个特定数据(数据2),PC根据接收到的数据是否为数据2来判断握手是否成功,如果不成功则再发送数据1,等待单片机的响应。如果连续3次都不成功,则弹出控制失败的窗口。
现在的问题是PC重复发送数据1这个循环应该怎么写呢,如果写在按钮control的消息响应函数里,而判断握手成功需要根据串口接收的数据来判断,那么按钮control的消息响应函数中就要用到MSComm的消息响应了。这样可以吗?或者有什么别的方法吗,例如使用API串口通信函数。
呵呵,我正在做 DSP 和 PC 端网络通信的,如果可以交流下,呵呵
1.你要增加一个按钮和一个下拉框来打开串口吧
2.建议增加一个用于发送握手报文的按钮,在向单片机发送 数据1 的时候,它会有回应吧,那么在MSCOMM控件的ONRECEIVED事件中,处理这个回应吧,如果正确回应,则把数据2发给单片机,如果又正确回应,那么就可以显示已成功握手了。
关于你说的重复发送数据1的问题,有个关键点:就是发送数据1给单片机的时候,一定要给回应,要不然你怎么知道它正确接收了呢?如果没有正确接收,可以启动一个定时器来执行重复发送的任务;如果接收成功就可以发送数据2了。
http://www.du8.com/books/op00j7lt.shtml
《Visual C++/Turbo C串口通信编程实践》
想请问使用API和MSCOMM控件的区别,是不是API函数需要考虑线程控制而MSCOMM控件就不需要?
我设想的流程是这样:照您说的增加一个串口用于发送握手信号,在这个按钮的消息响应函数中发送握手信号并且启动计时(比如3S),那么3S后会产生一个事件Event1。而在事件Event1的消息响应函数中来读取串口的接收缓冲区,检查是否收到正确的来自单片机的回应信号。如果3次都没有接收到正确的回应信号则不再响应该事件。