||
点击确定,然后出现如下添加变量名,将控件名称改为m_Com;
之后在编写控件的消息函数。如下图所示:
双击后添加如下代码:
// TODO: Add your control notification
handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
long len,k;
byte rxdata[512]; //设置BYTE数组
CString strtemp;
if(m_Com.GetCommEvent()==2) //值为表示接收缓冲区内有字符
{
variant_inp=m_Com.GetInput(); //读缓冲区消息
safearray_inp=variant_inp; ///变量转换
len=safearray_inp.GetOneDimSize(); //得到有效的数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);
for(k=0;k<len;k++) //将数组转换为CString型变量
{
char bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
m_strEditReceiveMsg+=strtemp; //加入接收编辑框对应字符串
}
}
UpdateData(FALSE); //更新编辑框内容
如下图所示:
接下来同样是给各个按钮添加函数,扫描端口按钮函数不变,打开串口函数为如下:
CString txt,error,data;
int i;
GetDlgItem(IDC_Open)->GetWindowText(txt);
i = ((CComboBox
*)GetDlgItem(IDC_COMBO))->GetCurSel();
((CComboBox
*)GetDlgItem(IDC_COMBO))->GetLBText(i,data);
if (txt == "打开串口")
{
data = data.Mid(3);
i = atoi(data);
if(m_Com.GetPortOpen()) //如果发现串口本来是打开的,则关闭串口
m_Com.SetPortOpen(FALSE);
m_Com.SetCommPort(i); //选择COM1端口
m_Com.SetInputMode(1); //输入方式为二进制方式
m_Com.SetInBufferSize(1024);
//设置输入缓冲区
m_Com.SetOutBufferSize(512);
//设置输出缓冲区
m_Com.SetSettings(TEXT("115200,n,8,1"));//波特率,无校验,个数据位,个停止位
if(!m_Com.GetPortOpen())
{
m_Com.SetPortOpen(TRUE); //打开串口
m_Com.SetRThreshold(1); //每当接收缓冲区有个字符则接收串口数据
m_Com.SetInputLen(0); //设置当前缓冲区长度为
m_Com.GetInput(); //预读缓冲区以清除残留数据
}
GetDlgItem(IDC_Open)->SetWindowText("关闭串口");
((CComboBox *)GetDlgItem(IDC_COMBO))->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);//不可用
}
else
{
m_Com.SetPortOpen (FALSE);
GetDlgItem(IDC_Open)->SetWindowText("打开串口");
((CComboBox
*)GetDlgItem(IDC_COMBO))->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);//可用
}
图略;
然后发送按钮的函数改为:
if(!m_Com.GetPortOpen()) return;
UpdateData(TRUE);
m_Com.SetOutput(COleVariant(m_strSendData));//发送数据
这样就可以发送与接收函数了。但是这样有个弊端那就是,编写的软件如果移到没有安装VC的电脑上就会打不开,这里有解决办法。在电脑的系统盘中的C:\Windows\System32中找到MSCOMM32.OCX文件,然后拿出来,新建一个记事本,如果是64位系统在里面写上如下代码:
@echo 开始注册
copy MSCOMM32.OCX %windir%\sysWOW64\
regsvr32 %windir%\sysWOW64\MSCOMM32.OCX /s
@echo dll注册成功
@pause
32位系统写上如下代码:
@echo 开始注册
copy MSCOMM32.OCX %windir%\system32\
regsvr32 %windir%\system32\MSCOMM32.OCX /s
@echo dll注册成功
@pause
然后将名称改成“串口注册.bat”将.bat文件和MSCOMM32.OCX文件放在一起在没有安装VC的电脑上双击.bat文件,然后就能够运行用mscomm控件编写的串口软件了。详细程序见“mscomm串口”。程序源代码下载地址:https://download.eeworld.com.cn/detail/lb8820265/556640