mfc初步探索 串列埠配置與通訊

2021-08-21 22:25:56 字數 2344 閱讀 2249

本文採用vs2013+mfc,使用mscomm進行串列埠通訊

首先註冊mscomm外掛程式,

新增activex控制項——microsoft communications control,version 6.0,右鍵控制項新增變數,並將主程式中ddx_control(pdx, idc_mscomm, m_mscomm)這行刪除掉。

開啟串列埠

if (m_mscomm.get_portopen())

m_mscomm.put_portopen(false); //關閉串列埠 

cbutton* pbtnopencomm = (cbutton*)getdlgitem(idc_button_opencomm);

ccombobox* pcomboboxcomm = (ccombobox*)getdlgitem(idc_combo_comm);

int nselcomm = pcomboboxcomm->getcursel();

m_mscomm.put_commport(nselcomm + 1); //設定串列埠為com4 

m_mscomm.put_settings(_t("115200,n,8,1")); //設定波特率115200,無奇偶校驗,8位資料位,1位停止位 

m_mscomm.put_inputmode(1); //設定資料接收模式,1為二進位制,0為文字 

m_mscomm.put_inputlen(0); //設定當前接收區資料長度,0表示全部讀取 

m_mscomm.put_inbuffersize(1024); //設定輸入緩衝區大小為1024 byte 

m_mscomm.put_outbuffersize(1024); //設定輸出緩衝區大小為1024 byte 

m_mscomm.put_rthreshold(8); //每接收到1個字元時,觸發oncomm事件 

m_mscomm.put_sthreshold(0); //設定每傳送多少個字元觸發oncomm事件,0表示不觸發oncomm事件 

if (!m_mscomm.get_portopen())

else

afxmessagebox(_t("can't open serial port"));

初始化串列埠

ccombobox* pcombocomm = (ccombobox*)getdlgitem(idc_combo_comm);

assert(pcombocomm);

//初始化串列埠視窗

for (int i = 1; i <= 10; i++)

pcombocomm->setcursel(2); //設定預設串列埠4

有可能初始化後在combo-box裡顯示亂序,這時候需要設定sort為false。

傳送資料

unsigned char txdata[13] = ;

unsigned short int unintcrc = getcrc16(txdata, 11);

unsigned char* punintcrc = (unsigned char*)&unintcrc;

txdata[11] = punintcrc[1];

txdata[12] = punintcrc[0];

unsigned char* ptxdata = (unsigned char*)&txdata;

cbytearray array;

array.removeall();

array.setsize(13);

for (int a = 0; a < 13; a++)

m_mscomm.put_output(colevariant(array));

txdata[13]為假定的一段資料 

接收資料

//afxmessagebox("t1");

if (m_mscomm.get_commevent() != 2)

cstring strrecv = _t("");

unsigned char rcvdata[1024] = ;//接收的資料  

colesafearray safearray_inp = m_mscomm.get_input();//讀緩衝區訊息  

dword len = safearray_inp.getonedimsize();//獲取有效資料長度  

for (long j = 0; j < len; j++)//轉化為unsigned char陣列  

for (long j = 0; j < len; j++)//將陣列轉換為cstring型變數

資料儲存在m_edittemp裡;

串列埠與socket通訊

到資訊。對於那種需要很長時間才能完成的操作來說,重疊i o機制尤其有用,因為發起 重疊操作的執行緒在重疊請求發出後就可以自由地做別的事情了。在windows nt 2000上,提供真正可擴充套件的i o模型就是使用完成埠 completion port 的重疊i o。可以把完成埠看成系統維護的乙個佇...

串列埠與socket通訊

2.完成埠建立成功後,在socket和完成埠之間建立關聯。再次呼叫createiocompletionport 函式,這一次在第1個引數filehandle傳入建立的socket控制代碼,引數existingcompletionport 為已經建立的完成埠控制代碼。以下 建立了乙個socket並把它...

藍芽模組配置串列埠通訊

無線串列埠通訊肯定需要兩個藍芽模組,微控制器傳送資料給電腦,連電腦的就需要 usb ttl 模組,藍芽模組與 usb ttl 連線就是 5v 連 5v,gnd 接 gnd rxd 接 txd,txd 接 rxd。配置藍芽模組時需要進入它的 at 模式,就是配置模式。進入at模式的方法 按住藍芽模組上...