當前位置:編程學習大全網 - 編程語言 - 懂MSComm控件的幫個忙

懂MSComm控件的幫個忙

妳好,估計妳對VC串口編程不了解,否則應該很容易實現。我盡力為妳解答,希望能夠對妳有所幫助。

1.假如妳現在正在學習VC串口編程,建議妳安裝壹個虛擬串口軟件vspdxp.exe

2.我自己寫了個程序實現妳的要求,vc6下測試通過,工程下載地址:/site/qiujiejia1/Home/BaiDu_Answer_VCSERIAL_1.zip

3.以下是部分代碼,僅供參考。

/****************************************************************************

初始化串口

****************************************************************************/

BOOL CCommTest::OnInitDialog()

{

CDialog::OnInitDialog();

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

//Initial COM

m_ctrlComm.SetCommPort(1); //選擇com1

m_ctrlComm.SetSettings("9600,n,8,1"); //通信參數設置 波特率9600,無校驗,8個數據位,1個停止位

m_ctrlComm.SetInBufferSize(1024); //指定接收緩沖區大小

m_ctrlComm.SetRThreshold(1); //參數1表示每當串口接收緩沖區中有多於或等於1個字符時將引發壹個接收數據的OnComm事件

m_ctrlComm.SetInputMode(1); //定義Input屬性獲取數據的方式(為0:文本方式;為1:二進制方式)。

m_ctrlComm.SetInputLen(0); //設置每次Input讀入的字符個數,缺省值為0,表明讀取接收緩沖 區中的全部內容。

m_ctrlComm.SetInBufferCount(0); //清空接收緩沖區

m_ctrlComm.SetPortOpen(TRUE); //打開串口

return TRUE; // return TRUE unless you set the focus to a control

}

/****************************************************************************

接收函數 。

****************************************************************************/

void CCommTest::OnComm()

{

char Rec_Data_Array[2048]; //用於接受數據

if (m_ctrlComm.GetCommEvent() == 2) //事件值為2表示接收緩沖區內有字符

{

VARIANT ReceiveData = m_ctrlComm.GetInput(); //獲取數據

int Data_Len = ReceiveData.parray->rgsabound->cElements; //取出壹維的數據個數

memcpy(Rec_Data_Array, (char*) ReceiveData.parray->pvData, Data_Len); //拷貝出數據

Rec_Data_Array[Data_Len] = 0;

}

// ::SetWindowText(::GetDlgItem(m_hWnd,IDC_EDIT_RXDATA),(Rec_Data_Array+5)); //在edit框裏輸出全部字符

::SetWindowText(::GetDlgItem(m_hWnd,IDC_EDIT_RXDATA),(Rec_Data_Array+5)); //(Rec_Data_Array+5)即表示從第六個字符(即6)開始輸出

}

/****************************************************************************

發送函數

****************************************************************************/

void CCommTest::OnTransmit()

{

char buf[100]={0};

::GetWindowText(::GetDlgItem(m_hWnd,IDC_EDIT_TXDATA),buf,sizeof(buf));

m_ctrlComm.SetOutput(COleVariant(buf));//發送數據

}

  • 上一篇:第三代納米機器人包含什麽是壹種可以進行人機對話的裝置
  • 下一篇:如果要開發手機APP,需要哪些準備
  • copyright 2024編程學習大全網