VB中的mscomm控件怎么添加啊

VB中的mscomm控件怎么添加啊,第1张

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 ' 发送数据


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11607111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存