最近最单片机时需要用RS232串口通信,PC端用MFC开发,现记录下关键代码,便于自己以后学习
PC端程序
步骤:
打开MFC,新建对话框工程
在窗体上右键插入ACTIVEX,选择Microsoft Communications Cotrol
选择该控件,进行类向导添加变量,新建类名称默认即可
设控件变量名称为m_com
下面进行初始化操作:
数据发送:
void SendToSCIPort(CString str)//向串口发送字串的函数
{
CByteArray array;
array.RemoveAll();
array.SetSize(str.GetLength()+1);
for(int i=0;i<str.GetLength();i++)
array.SetAt(i,str.GetAt(i));
array.SetAt(str.GetLength(),'/n');
m_com.SetOutput(COleVariant(array));
}
数据接收:
为控件添加事件,在类向导中进行操作
需要注意的是:单片机发送过来的信息,比如是个字节,但是对于PC端,这是个字节可能只触发一次OnOnCommMscomm1() 函数,也可能触发多次OnOnCommMscomm1() ,其中上述变量K即为收到的字节数,所以在通信时定义了/n表示一行结束了,触发OnOnCommMscomm1() 事件时读取字串,如果末尾不是/n表示没有结束,将接收到的内容添加到com_str中,直到程序判断出/n表示一行结束了,这样才显示接收到的内容