vc COM口的打开,关闭,发送及接收

来源:互联网 发布:球球大作战抽奖软件 编辑:程序博客网 时间:2024/05/29 15:22
 1.打开COM口:
                         DCB dcb;
                         HANDLE m_hCom;//COM口句柄
                         m_hCom = CreateFile(
                                                                 "COM1",
                                                                  GENERIC_READ|GENERIC_WRITE,
                                                                  0,
                                                                  NULL,
                                                                  OPEN_EXISTING,
                                                                  0,
                                                                  NULL);


2.设置COM口
                      if (m_hCom != INVALID_HANDLE_VALUE) // 打开串行口成功
                     {
                        // 配置通讯参数
                       GetCommState(m_hCom, &dcb);


                       dcb.BaudRate = CBR_9600;//波特率
                      dcb.Parity = EVENPARITY;
                      //EVENPARITY 偶校验 ,NOPARITY 无校验
                      //MARKPARITY 标记校验   ODDPARITY 奇校验
                      dcb.ByteSize = 8;//数据位
                      dcb.StopBits = ONESTOPBIT;// ONESTOPBIT 1位停止位  

                                                                        //TWOSTOPBITS 2位停止位
                                                                       //ONE5STOPBITS   1.5位停止位
                      COMMTIMEOUTS m_CommTimeouts;
                      SetCommState(m_hCom, &dcb);
                      // Config timeouts设置超时
                      m_CommTimeouts.ReadIntervalTimeout = 0;
                      m_CommTimeouts.ReadTotalTimeoutConstant = 1000;
                      m_CommTimeouts.ReadTotalTimeoutMultiplier = 0;
                      m_CommTimeouts.WriteTotalTimeoutConstant = 200;
                      m_CommTimeouts.WriteTotalTimeoutMultiplier = 0;
                      SetCommTimeouts(m_hCom, &m_CommTimeouts);
                      // Clear buffer清除缓冲区
                      PureComm(m_hCom, PURGE_TXCLEAR);
                      PurgeComm(m_hCom, PURGE_RXCLEAR);


                      // 打开串行口成功
                      return TRUE;
                  }

3.写串口
                     char lpOutBuffer[100];
                     DWORD dwBytesWrite=100;
                     COMSTAT ComStat;
                     DWORD dwErrorFlags;
                     BOOL bWriteStat;
                     bWriteStat=WriteFile(hCom,lpOutBuffer,dwBytesWrite,& dwBytesWrite,NULL);
                     if(!bWriteStat)
                     {
                       AfxMessageBox("写串口失败!");
                     }
4.读串口

                     char str[100];
                     DWORD wCount;//读取的字节数
                     BOOL bReadStat;
                     bReadStat=ReadFile(hCom,str,100,&wCount,NULL);
                     if(!bReadStat)
                     {
                        AfxMessageBox("读串口失败!");
                        return FALSE;
                    }
                    return TRUE;

5.关闭
                       BOOL CloseHandle(  HANDLE hObject; //handle to object to close );
原创粉丝点击