<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Visual C++串口通信技術(shù)編程實(shí)例

Visual C++串口通信技術(shù)編程實(shí)例

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò ) 收藏
結合DT線(xiàn)掃程序,使用MSC++omm控件進(jìn)行串口編程

1.先要插入控件,如果試圖類(lèi)是基于CFormView的,那么創(chuàng )建CMSComm類(lèi)是簡(jiǎn)單的,只需在對話(huà)框窗體中插入控件,再在視圖類(lèi)中為該控件聲明一個(gè)變量即可,這樣在程序運行中,該控件都將有效的。如果視圖類(lèi)不是基于FormView的,那么需要建立一個(gè)MSComm控件,創(chuàng )建的方法與普通的ActiveX控件的創(chuàng )建類(lèi)似。

本文引用地址:http://dyxdggzs.com/article/201612/324417.htm

同時(shí)參考DT線(xiàn)掃,勝哥把控件直接放在A(yíng)boutDlg上,應該放在其他對話(huà)框上也行,然后在MainFrm.cpp::OnCreat()函數中添加創(chuàng )建控件的語(yǔ)句

//創(chuàng )建串口1
DWORD style=WS_VISIBLE|WS_CHILD;
if(!m_MSComm.Create(NULL,style,CRect(0,0,0,0),this,IDC_MSCOMM3))
{
//TRACE0("Failed to create OLE Communication Control");
AfxMessageBox("串口打開(kāi)失??!");
return -1;
}

http://dev.yesky.com/231/2309731.shtml深入淺出VC++串口編程之基于控件

2.初始化并打開(kāi)

設定通信端口號,通信協(xié)議,設定傳輸速率等參數,設定其他參數,打開(kāi)通信端口

//串口1初始化
if(m_MSComm.GetPortOpen()) //如果串口是打開(kāi)的,則行關(guān)閉串口
m_MSComm.SetPortOpen(FALSE);

m_MSComm.SetCommPort(1); //選擇COM1
m_MSComm.SetInBufferSize(1024); //接收緩沖區
m_MSComm.SetOutBufferSize(1024); //發(fā)送緩沖區
m_MSComm.SetInputLen(0); //設置當前接收區數據長(cháng)度為0,表示全部讀取
m_MSComm.SetInputMode(1); //以二進(jìn)制方式讀寫(xiě)數據
m_MSComm.SetRThreshold(12); //接收緩沖區有1個(gè)及1個(gè)以上字符時(shí),將引發(fā)接收數據的OnComm事件
m_MSComm.SetSettings("9600,e,8,1"); //波特率:9600,偶檢驗位,8個(gè)數據位,1個(gè)停止位
m_MSComm.SetDTREnable(TRUE);
m_MSComm.SetRTSEnable(TRUE);

3.捕捉串口事項

這里用事件驅動(dòng)方法。

右鍵在控件上添加消息映射,OnCommMscomm.添加到MainFrm中

4.串口讀寫(xiě)

用GetInput()和Setoutput()就可。都使用VARIANT類(lèi)型。

oid CMainFrame::OnCommMSComm()
{
int a, i;
unsigned char *ucData;
unsigned short *nData;
CString str, str1;
switch(m_MSComm2.GetCommEvent())
{
case 2:
a = m_MSComm2.GetInBufferCount();
if(a>0)
{
ucData = (unsigned char*)m_MSComm2.GetInput().parray->pvData;
nData = new unsigned short[a/2];
memset(nData, 0, sizeof(unsigned short)*a/2);
for(i=0; i {
nData[i] += *(ucData++);
nData[i] <<= 8;
nData[i] += *(ucData++);
str1.Format("%d", nData[i]);
str += str1;
}
CChildFrame *pChildFrame = (CChildFrame*)MDIGetActive();
pChildFrame->m_pFormView2->m_viewFormView2Page2.CommPacketReceive(a/2, nData);
delete[] nData;
}
AfxMessageBox(str);
break;
default:
break;
}
}

void CMainFrame::CommSendData(unsigned short nData)
{

unsigned char ucDataHighByte, ucDataLowByte;//nData的高字節與低字節
ucDataHighByte = nData >> 8;
ucDataLowByte = (nData << 8) >> 8;
TheSig.RemoveAll();//清空發(fā)送區
TheSig.SetSize(2);
TheSig.SetAt(0, ucDataHighByte);//將發(fā)送數據的高字節加入發(fā)送區
TheSig.SetAt(1, ucDataLowByte);//將發(fā)送數據的低字節加入發(fā)送區
m_MSComm.SetOutput(COleVariant(TheSig));//發(fā)送

}

5.

關(guān)閉串口

bool CMainFrame::CloseComm()
{
if(m_MSComm.GetPortOpen())
m_MSComm.SetPortOpen(false);
return !m_MSComm.GetPortOpen();

}

對照線(xiàn)掃和該書(shū)。還有關(guān)于COleSafeArray的使用等



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>