串口操作API 详解.doc
文本预览下载声明
++串口API应用? [嵌入式] 发布时间:2008-06-14 12:50:15 ?
/***********************************************************************************************??????????initialSerial功能:串口初始化
参数:无
返回:无
***********************************************************************************************/
void initialSerial()?? //串口初始化{?char szComParams[50];?DCB dcb;?char *m_com;?char *m_baud;?char *m_jiaoyan;??? m_com=Com1;?m_baud=1200;?m_jiaoyan=E;
?COMMTIMEOUTS CommTimeOuts;?m_hIDComDev = NULL;?m_hIDComDev = CreateFile(m_com, GENERIC_READ|GENERIC_WRITE, 0, NULL,? ???????? OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);? //打开串口
?if(m_hIDComDev==INVALID_HANDLE_VALUE)?{??AfxMessageBox(打开串口错误0,请检查!);??goto endd;?}?if(m_hIDComDev ==(HANDLE) -1)?{??AfxMessageBox(打开串口错误,请检查!); ??goto endd;?}
?SetCommTimeouts(m_hIDComDev, CommTimeOuts);? //串口超时配置?CommTimeOuts. ReadIntervalTimeout=0xFFFFFFFF;?CommTimeOuts. ReadTotalTimeoutMultiplier = 0;?CommTimeOuts. ReadTotalTimeoutConstant =5000;?CommTimeOuts. WriteTotalTimeoutMultiplier = 0;?CommTimeOuts. WriteTotalTimeoutConstant = 5000;?PurgeComm(m_hIDComDev, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR ) ; ?m_com=Com1:38400,E,8,1;?wsprintf(szComParams, m_com);?? //设置串口参数
?dcb. DCBlength = sizeof(DCB);?GetCommState(m_hIDComDev, dcb);//
?int baud;?baud = atoi(m_baud);?dcb. BaudRate = baud;?? //设置波特率? ?dcb. ByteSize= 8; //设置校验字节
?if ((!SetCommState(m_hIDComDev, dcb))||(!SetupComm(m_hIDComDev,10000,10000)))//设置串口和收发缓冲器的大小?? ?{??DWORD dwError = GetLastError();??CloseHandle(m_hIDComDev);?}?PurgeComm(m_hIDComDev,PURGE_RXCLEAR|PURGE_TXCLEAR|PURGE_TXABORT|PURGE_RXABORT);//清收发缓冲器endd:;}/************************************************************************************************???????????SendData功能:发送数据给串口
参数:?buff发送的数据??send_length?? 长度
返回:? 成功 1? 失败? 0
************************************************************************************************/DWORD SendData( unsigned char buff[],int send_length)??? //发
显示全部