📄 vb chuank.txt
字号:
void CIoView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
"
if(this->m_ctrMscom.GetPortOpen())
"m_ctrMscom.SetPortOpen(FALSE);
"
m_ctrMscom.SetCommPort(1); //选择com1
if( !m_ctrMscom.GetPortOpen())
m_ctrMscom.SetPortOpen(true);//打开串口
else
AfxMessageBox("cannot open serial port");
"
m_ctrMscom.SetSettings("9600,n,8,1");
//波特率9600,无校验,8个数据位,1个停止位
"
m_ctrMscom.SetInputMode(1); // 以二进制方式检取数据
m_ctrMscom.SetRThreshold(1);
//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
m_ctrMscom.SetInputLen(0); //设置当前接收区数据长度为0
m_ctrMscom.GetInput();//先预读缓冲区以清除残留数据
"
"
}
oncomm事件函数:
void CIoView::OnOnCommMscomm1()
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
//设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(this->m_ctrMscom.GetCommEvent()==2)
//事件值为2表示接收缓冲区内有字符
{
//以下你可以根据自己的通信协议加入处理代码
variant_inp=m_ctrMscom.GetInput(); //读缓冲区
safearray_inp=variant_inp;
//VARIANT型变量转换为ColeSafeArray型变量
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);
//将字符送入临时变量strtemp存放
this->m_strReceive+=strtemp;
//加入接收编辑框对应字符串
}
}
"UpdateData(FALSE); //更新编辑框内容
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -