1、首先在电脑中,找到并打开“Microsoft Visual Basic 6.0 中文版”软件。
2、然后在打开的页面中,默认状态下,“工具箱”中的控件,只有如图所示的这些。
3、这时单击页面上方“工具”菜单中的“部件”按钮。
4、在“部件”对话框中的“控件”选项卡中,选中“Microsoft Common Dialog Control 6.0”,然后单击“确定”按钮。
5、这时可以看到,工具箱中多了一些控件,这些控件即为高级控件。
1:添加MSComm控件
2:为对话框添加MSComm控件成员变量
右击MSComm控件,然后选择Add Variable...
3:为对话框添加OnComm事件
右击MSComm控件,然后选择Add Event Handle..
4:打开/关闭串口.
void Ctbox_debug_viewDlg::OnBnClickedBtOpen()
{
// TODO: Add your control notification handler code here
if(m_mscomm.get_PortOpen())
{
m_mscomm.put_PortOpen(FALSE)
GetDlgItem(IDC_BT_OPEN)->SetWindowText(_T("打开"))
ShowInfo(_T("关闭串口成功!"))
m_OpenStatus =false
return
}
UpdateData(TRUE)
m_OpenStatus =true
//当前端口号
m_mscomm.put_CommPort(m_Port+1)//端口号
m_mscomm.put_InBufferSize(1024)//接收缓冲区
m_mscomm.put_OutBufferSize(1024)//发送缓冲区
m_mscomm.put_InputLen(0)//设置当前接收区数据长度为0,表示全部读取
m_mscomm.put_InputMode(1)//以二进制方式读写数据
m_mscomm.put_RThreshold(1)//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
//波特率
DWORD baudrate
switch(m_CombolBaudrate.GetCurSel())
{
case 0:
baudrate =115200
break
case 1:
baudrate =9600
break
default:
ASSERT(FALSE)
break
}
CString setting
setting.Format(_T("%d,n,8,1"),baudrate)
m_mscomm.put_Settings(setting/*_T("115200,n,8,1")*/)//波特率,无校验,8个数据位,1个停止1位
m_mscomm.put_PortOpen(TRUE)//打开串口
GetDlgItem(IDC_BT_OPEN)->SetWindowText(_T("关闭"))
ShowInfo(_T("打开串口成功!"))
}
5:接收串口数据
void Ctbox_debug_viewDlg::OnCommMscomm1()
{
// TODO: Add your message handler code here
short curEvent =m_mscomm.get_CommEvent()
switch(curEvent)
{
case CMscomm1::comEvReceive:
EvReceiveHandle()
break
}
}
void Ctbox_debug_viewDlg::EvReceiveHandle(void)
{
static unsigned int cnt=0
VARIANT variant_inp
COleSafeArray safearray_inp
long len,k
/*unsigned intdata[1024]={0}*/
BYTE rxdata[1024]//设置BYTE数组
CString strtemp
cnt++
variant_inp= m_mscomm.get_Input()//读取缓冲区
safearray_inp= variant_inp//变量转换
len= safearray_inp.GetOneDimSize()//得到有效的数据长度
for (k=0k<lenk++)
{
safearray_inp.GetElement(&k,rxdata+k)
}
/*char c_char*/
for (k=0k<lenk++)
{
strtemp.Format(_T("%c"),*(rxdata+k))
m_RecveString +=strtemp
if(*(rxdata+k) =='\n')
{
ShowInfoByFilter(m_RecveString)
m_RecveString =""
}
}
}
6:发送串口数据
void Ctbox_debug_viewDlg::OnBnClickedBtSend()
{
// TODO: Add your control notification handler code here
if(m_OpenStatus ==false)
{
AfxMessageBox(_T("请先打开串口"))
return
}
UpdateData(TRUE)
if(m_SendString.IsEmpty())
return
if(m_AutoAddLF)
{
m_SendString +="\r\n"
}
m_mscomm.put_Output(COleVariant(m_SendString))
ShowInfo(m_SendString)
}
Public Sub fasong(addr_h As Byte, addr_l As Byte, cmd As Byte) '定义共用过程Dim fasong_data(1 To 3) As Byte
fasong_data(1) = addr_h
fasong_data(2) = addr_l
fasong_data(3) = cmd
MSComm1.Output = fasong_data ' 发送数据
End Sub
这个里面的
MSComm1.Output = fasong_data ' 发送数据
改成
Main.MSComm1.Output = fasong_data ' 发送数据
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)