欢迎来到天天文库
浏览记录
ID:34419431
大小:83.50 KB
页数:6页
时间:2019-03-06
《windows串口通信的基本步骤》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、串口通信的基本步骤(1)通过CreateFile(“COMx:“,…)打开串口(2)通过配置DCB结构体和SetCommState函数,设置串口的参数。(3)通过ReadFile()和WriteFile读写串口Windows串口通信实例封装了一个串口通信的C++类CSerial,通过CSerial类的OpenSerialPort()可以打开一个串口,串口打开后后自动新建线程读取串口数据,并通过MessageBox简单的显示出数据。通过CSerial类的SendData()方法可以向串口发送数据。主函数中,新建了一个CSerial类对象,打开串口2,然后简单的通过一个消息框循
2、环来控制向串口不断的发送数据。程序的效果图如下:使用虚拟串口工具虚拟出串口对COM2和COM3,本实例程序读写COM2,使用串口调试助手打开COM3。->在“是否向串口发送数据”消息框中,点击”是(Y)”会向串口发送一条”Thisisaexample”数据。如图,在串口调试助手中收到该数据包->在串口调试助手中,手动发送”jarvischu”,程序会读取到该数据并弹出消息框显示。源码如下:Serial.h#pragmaonce#includeclassCSerial{public:CSerial(void);~CSerial(void);//打开串口BOOLOpenSeri
3、alPort(TCHAR*port,UINTbaud_rate,BYTEdate_bits,BYTEstop_bit,BYTEparity=NOPARITY);//发送数据BOOLSendData(char*data,intlen);public:HANDLEm_hComm;};Serial.cpp#include "StdAfx.h"#include "Serial.h"#include typedef unsigned (__stdcall *PTHREAD_START) (void *);CSerial::CSerial(void){m_hCom
4、m = INVALID_HANDLE_VALUE;}CSerial::~CSerial(void){if(m_hComm != INVALID_HANDLE_VALUE){CloseHandle(m_hComm);}}/********************************************************************************************* * 功能 :读串口线程回调函数 * 描述 :收到数据后,简单的显示出来 ********************************************
5、************************************************/DWORD WINAPI CommProc(LPVOID lpParam){CSerial* pSerial = (CSerial*)lpParam; ////清空串口PurgeComm(pSerial->m_hComm,PURGE_RXCLEAR
6、PURGE_TXCLEAR);char buf[512];DWORD dwRead;while(pSerial->m_hComm != INVALID_HANDLE_VALUE){BOOL bReadOK = ReadFile(p
7、Serial->m_hComm,buf,512,&dwRead,NULL);if(bReadOK && (dwRead > 0)){buf[dwRead] = ' ';MessageBoxA(NULL,buf,"串口收到数据",MB_OK);}}return 0;}/******************************************************************************************* * 功能 :打开串口 * port :串口号, 如_T("COM1:") * baud_rate:波特率 *
8、date_bits:数据位(有效范围4~8) * stop_bit :停止位 * parity :奇偶校验。默认为无校验。NOPARITY 0; ODDPARITY 1;EVENPARITY 2;MARKPARITY 3;SPACEPARITY 4 ********************************************************************************************/BOOL CSerial::OpenSerialPort(TCHAR* port
此文档下载收益归作者所有