上位机通过RS-232串行口与由单片机组成的下位机实现通信。上位机通过Mscomm控件编程实现向下位机发送上肢动作控制指令,下位机通过单片机串行口编程实现向上位机反馈信息和发送传感器信息。上位机实现向下位机发送控制指令的流程如图8-20所示。在通信过程中,采用事件驱动方式来处理通信,用OnComm事件捕获并处理通信事件,还可以检查和处理通信错误,具有程序响应及时、可靠性高的特点,适用于机器人控制。
1)初始化。通过下面语句实现对串行口的初始化。串行口初始化后,串行口号设置为1,串行口属性设置波特率为9600bit/s,无校验,8个数据位,1个停止位。可以通过单击“通信”按钮,弹出对话框对串行口属性进行设置,如图8-21所示。
图8-20 上下位机通信流程
图8-21 串行口属性设置窗口(www.daowen.com)
m_ctrlCom.SetCommPort(m_nComPort); //设置串行口号
m_strComSettings=_T(″9600,n,8,1″); //串行口属性赋值
m_ctrlCom.SetSettings(m_strComSettings); //设置串行口属性
2)通过设置m_ctrlCom.SetPortOpen()函数的参数为TRUE打开串行口,调用m_ctrl-Com.SetInputMode()函数来设置数据检取方式,通过m_ctrlCom.SetRThreshold()函数设置何时触发接收数据的OnComm事件,通过m_ctrlCom.SetInputLen()函数设置当前接收区数据长度;调用m_ctrlCom.GetInput()函数先预读缓冲区,以清除残留数据。
3)发送数据前,先利用String2Hex()函数将Cstring类型数据转换为十六进制数据,然后调用SendInHex()函数发送控制指令信息。等待OnComMscomm()函数接收反馈信息,如果反馈信息与发送信息相同,则结束发送过程。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。