• 4704阅读
  • 0回复

【转帖】VC6.0利用API实现串口通讯 [复制链接]

上一主题 下一主题
离线XChinux
 

只看楼主 倒序阅读 楼主  发表于: 2005-08-13
原文见:http://www.chinaitlab.com/www/news/article_show.asp?id=31344


  int Init_Comm()
  {
  CHAR port_name[10];
  DCB dcb;
  BOOL status;
  DWORD error_number;
  
  status = OK;
  memset(port_name,0,sizeof(port_name));
  memcpy(port_name,"COM1",4);
  
  handle_com = CreateFile(port_name,
  GENERIC_READ | GENERIC_WRITE,
  0,
  NULL,
  OPEN_EXISTING,
  NULL,
  NULL);
  
  if(handle_com == INVALID_HANDLE_VALUE)
  return(COMM_ERROR);
  
  if(!GetCommState(handle_com,&dcb))
  return(COMM_ERROR);
  
  dcb.BaudRate = 9600;
  dcb.ByteSize = 8;
  dcb.Parity = NOPARITY;
  dcb.StopBits = ONESTOPBIT;
  dcb.fOutxCtsFlow = 0;
  dcb.fRtsControl = RTS_CONTROL_ENABLE ;
  
  if( !SetCommState(handle_com, &dcb) )
  {
  error_number = GetLastError();
  status = COMM_ERROR;
  }
  
  if(status != OK)
  CloseHandle(handle_com);
  
  return(status);
  }
  
  ...............................................
  
  if( WriteFile(handle_com,buffer,length,&dwBytesWrite,NULL) == TRUE)
  {
  if(dwBytesWrite != length)
  {
  strMsg.Format("发送失败",NULL,NULL);
  AfxMessageBox(strMsg,MB_OK);
  }
  }
  
  .................................................
  
  if(!(status=ReadFile(handle_com,&Recv_Buffer,1,&dwBytesRead,NULL)))
  {
  PurgeComm(handle_com,PURGE_RXCLEAR);
  return(ABANDON);
  }
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个