下面就来总结一下刚刚做的这个实验,这个实验恐怕是整个串口通信中最简单的一个了。就是一个收数据,一个接收数据显示(我想了想我的项目也就能用到这么一点的串口通信功能),用的是对话框格式。下面一起来看看吧。
STEP1->
首先完成的是整程序的布局,整个不用多说了,直接看下面的图大家就明白了。
我觉得重要的源程序代码:
(1)BOOL CTryDlg::OnInitDialog()
{
CDialog::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CString str;
str="阿元串口收发测试程序";
this->SetWindowText(str);
m_ctrlComm.SetCommPort(3); //选择COM3
m_ctrlComm.SetInputMode(1); //输入方式为二进制方式
m_ctrlComm.SetInBufferSize(1024); //设置输入缓冲区大小
m_ctrlComm.SetOutBufferSize(512); //设置输出缓冲区大小
//波特率9600,无校验,8个数据位,1个停止位
m_ctrlComm.SetSettings("9600,n,8,1");
//参数1表示当串口接收缓冲区中有多于或者等于1个字符时将引发一个接收数据的OnOnCommMscomm1事件
if(!m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(1);
m_ctrlComm.SetRThreshold(1);
m_ctrlComm.SetInputLen(0); //设置当前接受区长度为0
m_ctrlComm.GetInput(); //先预读缓冲区以清除残留数据
return TRUE; // return TRUE unless you set the focus to a control
}
(2)void CTryDlg::OnOnCommMscomm1() //从串口接收数据并显示在接受编辑框中
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
CString strtemp;
if(m_ctrlComm.GetCommEvent() == 2) //如果接收缓冲区内有字符
{
variant_inp = m_ctrlComm.GetInput(); //读缓冲区
safearray_inp = variant_inp;
len = safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k); //转换为BYTE型数组
}
for(k=0;k<len;k++) //将数组转换为CString型数组
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt);
m_strEditRXDATA += strtemp; //加入接受编辑框对应字符
}
}
UpdateData(0);
}
(3)void CTryDlg::OnButtonManualsend()
{
UpdateData(1); //读取编辑框内容
m_ctrlComm.SetOutput(COleVariant(m_strEditTXDATA)); //发送数据
}
以上就是这个简单程序的主要的源程序代码,他的运行效果见下图(首先要将CC2430打开,板子里面的程序是例子程序的串口测试程序)。
文章评论(0条评论)
登录后参与讨论