CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

在串口通讯中,在vc下使用多个串口,在com10以上应怎么处理?

楼主guyue6670()2005-04-02 07:46:35 在 VC/MFC / 基础类 提问

在我的串口通讯程序中,当达到com10以后,vc下用函数createfile创建端口编程就出现了问题,请问各位应怎么处理? 问题点数:20、回复次数:7Top

1 楼legendhui(秋天的叶子)回复于 2005-04-02 08:58:39 得分 5

不知道楼主的问题解决了没有。如果没有可以看看我的建议,应该不会白看的。。。  
  楼主如果用MSCOMM32.ocx控件的话,就不会有这个问题了。  
  如果用CreateFile(。。。)来打开串口的话,其中参数lpszPortNum指的就是串口名,如  
  "COM1","COM2",。。。,"COM9"。  
  为什么只到"COM9",因为从"COM10"以后名字不一样了。  
  如串口10,对应的参数为"\\\\.\\COM10",  
  至于串口11以后的,我就不说了,楼主应该能想到了。。。。  
  至于要枚举出一台机子得所有串口,楼上回答过这个问题,我不说了。。。  
  Top

2 楼auly403(卡西*丁布)回复于 2005-04-02 09:04:34 得分 0

markTop

3 楼qrlvls( 空 气 )回复于 2005-04-02 09:08:13 得分 10

我使用了一个CSerialPort   的串口类,并未见到有何异常  
  void   CLSComm::Initialize(UINT   uBaud,   char   chParity,   UINT   uDataBits,   float   fStopBits)  
  {  
  m_uBaudRate =   uBaud;  
  m_chParity =   chParity;  
  m_uDataBits =   uDataBits;  
   
  if   (fStopBits   ==   1.5) //   1.5   个停止位  
  m_uStopBits =   2;  
  else   if(fStopBits   >   1.5) //   2   个停止位  
  m_uStopBits =   3;  
  else  
  m_uStopBits =   1; //   1   个停止位  
  }  
   
  BOOL   CLSComm::OpenDevice(UINT   uPort,   HWND   hMsgTarget)  
  {  
  BOOL bResult   =   FALSE;  
  TCHAR szPort[MAX_PATH];  
  TCHAR szBaud[MAX_PATH];  
   
  m_uCommPort =   uPort;  
  m_hTargetWindow =   hMsgTarget;  
   
  CloseDevice();  
   
  m_hWriteEvent =   CreateEvent(NULL,   TRUE,   FALSE,   NULL); //   发送数据事件  
  m_hShutdownEvent =   CreateEvent(NULL,   TRUE,   FALSE,   NULL); //   关闭线程的事件  
  m_ovComm.hEvent =   CreateEvent(NULL,   TRUE,   FALSE,   NULL); //   读取数据事件  
   
  m_hEventArray[USER_EVENT_QUIT] =   m_hShutdownEvent;  
  m_hEventArray[USER_EVENT_RECEIVE] =   m_ovComm.hEvent;    
  m_hEventArray[USER_EVENT_SEND] =   m_hWriteEvent;    
   
  wsprintf(szPort,   _T("\\\\.\\COM%d"),   m_uCommPort);  
  wsprintf(szBaud,   _T("baud=%d   parity=%c   data=%d   stop=%d"),   m_uBaudRate,   m_chParity,   m_uDataBits,   m_uStopBits);  
   
  InitializeCriticalSection(&m_csCritical);    
  EnterCriticalSection(&m_csCritical);    
   
  //   打开串口设备  
  m_hDevice   =   CreateFile(szPort,   GENERIC_READ   |   GENERIC_WRITE,   0,   NULL,   OPEN_EXISTING,   FILE_FLAG_OVERLAPPED,   0);  
  if   (m_hDevice   ==   INVALID_HANDLE_VALUE)  
  {  
  m_hDevice   =   NULL;  
  return   FALSE;    
  }  
   
  if   (SetCommTimeouts(m_hDevice,   &m_timeoutComm))    
  {    
  if   (SetCommMask(m_hDevice,   EV_RXCHAR   |   EV_TXEMPTY   |   EV_CTS))    
  {    
  if   (GetCommState(m_hDevice,   &m_dcbComm))    
  {    
  m_dcbComm.fRtsControl   =   RTS_CONTROL_ENABLE;    
  //m_dcbComm.fRtsControl   =   RTS_CONTROL_DISABLE;    
  //m_dcbComm.fDtrControl   =   DTR_CONTROL_ENABLE;  
  if   (BuildCommDCB(szBaud,   &m_dcbComm))    
  {    
  if   (SetCommState(m_hDevice,   &m_dcbComm))  
  {  
  PurgeComm(m_hDevice,   PURGE_RXCLEAR   |   PURGE_TXCLEAR   |   PURGE_RXABORT   |   PURGE_TXABORT);    
  m_hCommThread   =   CreateThread(NULL,   0,   _CommThread,   this,   0,   &m_dwCommThreadID);    
  bResult   =   (m_hCommThread   !=   NULL)   ?   TRUE   :   FALSE;  
  }  
  }    
  }    
  }    
  }    
   
  LeaveCriticalSection(&m_csCritical);    
   
  if   (!bResult)  
  CloseDevice();  
  else  
  m_bThreadAlive   =   TRUE;  
   
  return   bResult;    
  }  
  Top

4 楼qrlvls( 空 气 )回复于 2005-04-02 09:08:46 得分 0

注:我同时驱动了16个串口,使用了COM20Top

5 楼qrlvls( 空 气 )回复于 2005-04-02 09:09:37 得分 0

COM1和COM10并未有所区别,应该检查其他部分的代码,而不要归结于是COM10还是COM11Top

6 楼guyue6670()回复于 2005-04-05 11:02:45 得分 0

我在用createfile()函数时,得到句柄时出现错误,报错是:大部开端口,各位有没有遇到过这个问题?应怎么解决?        
   
        qrlvls(≌AIR⌒LIKE   ≤空气≥)   兄,是怎么解决的则合格问题?  
  Top

7 楼samp_miao(九天揽月)回复于 2005-04-27 13:47:45 得分 5

小于10时候加不加都行的,大于9时候就是必须要加"\\\\.\\"  
   
  比如串口10,对应的参数为"\\\\.\\COM10",Top

相关问题

  • vc++6.0 串口通讯
  • vc串口通讯,急!!!!!
  • VC串口通讯问题
  • 串口通讯
  • 串口通讯!!!
  • 串口通讯
  • 串口通讯
  • vc的串口通讯问题
  • 串口通讯?[Delphi]
  • spcomm串口通讯

关键词

  • 解决
  • null
  • 串口
  • chparity
  • fstopbits
  • heventarray
  • udatabits
  • ustopbits
  • createevent
  • 参数

得分解答快速导航

  • 帖主:guyue6670
  • legendhui
  • qrlvls
  • samp_miao

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo