• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > SetCommStateerror87

SetCommStateerror87

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 SetCommStateerror87等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: SetCommState error 87
描述:

在设置串口设置时运行到SetCommState(m_hCom,&m_Dcb) 返回error87 GetCommState( m_hComm, &m_Dcb )处没报错下面是的程序希望大家帮忙看看,是哪里错了,谢谢!
BOOL CSerialPort:: Open( int dwComPort, DWORD dwBaudrate,BYTE bByteBits,BYTE bStopBits,BYTE bParity )
{
if( m_fOpen) return( TRUE );
        char szPort[15];
DWORD dwResult=TRUE;
        DWORD dwID;
        HANDLE m_hComm;
   
wsprintf( szPort, "COM%d", dwComPort );
        m_hComm = CreateFile( szPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL );
if(  m_hComm ==NULL ) return(FALSE); 
    
memset( &m_osRead, 0, sizeof( OVERLAPPED ) );
  memset( &m_osWrite, 0, sizeof( OVERLAPPED ) );
 
//set commtimeouts
        m_CommTimeouts.ReadIntervalTimeout = 0xFFFFFFFF;
m_CommTimeouts.ReadTotalTimeoutMultiplier = 0;
m_CommTimeouts.ReadTotalTimeoutConstant = 0;
m_CommTimeouts.WriteTotalTimeoutMultiplier = 0;
m_CommTimeouts.WriteTotalTimeoutConstant = 5000;
        SetCommTimeouts(m_hComm,&m_CommTimeouts);
        m_osRead.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
m_osWrite.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
m_Dcb.DCBlength = sizeof( DCB );
        int fSuccess=GetCommState( m_hComm, &m_Dcb );
        //SetDCB(dwBaudrate,bByteBits,bStopBits,bParity);
        if (!fSuccess) 
       {
        char strl[50];
        // Handle the error.
        sprintf (strl,"GetCommState failed with error %d.\n", GetLastError());
        MessageBox(NULL,strl,"GetCommState",MB_OK);
       }
m_Dcb.BaudRate = dwBaudrate;
m_Dcb.ByteSize =bByteBits;
m_Dcb.StopBits =bStopBits;
m_Dcb.XoffChar=0x13;
m_Dcb.X />
switch (bParity)
     {
case NOPARITY:
m_Dcb.fParity = FALSE;
m_Dcb.Parity = bParity;
break;
case ODDPARITY:
case EVENPARITY:
        m_Dcb.fParity = TRUE;
        m_Dcb.Parity = bParity;
        break;
      }
      
    if(!SetCommState( m_hComm, &m_Dcb ) ||
!SetupComm( m_hComm, 1024, 1024 ) ||
!PurgeComm(m_hComm,PURGE_TXABORT | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_RXCLEAR)||
m_osRead.hEvent == NULL ||
m_osWrite.hEvent == NULL )
       { 
        char str[50];
DWORD dwError = GetLastError();
        sprintf (str,"SetCommState failed with error %d.\n", GetLastError());
        MessageBox(NULL,str,"SetCommState",MB_OK);                              //此处报错
if( m_osRead.hEvent != NULL ) CloseHandle( m_osRead.hEvent );
if( m_osWrite.hEvent != NULL ) CloseHandle( m_osWrite.hEvent );
CloseHandle( m_hComm );
dwResult=FALSE;
       }
     else
{
m_hWatchThread = CreateThread(NULL,0,WatchThreadProc,0,0,&dwID);
if (NULL != m_hWatchThread)
   {
dwResult = TRUE;
   }
else
   {
CloseHandle(m_hComm);
dwResult = FALSE;
   }
}
     m_fOpen = dwResult;
     return( m_fOpen );
     }


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-04 如何在一个子类化的控件实现字体改变
  • 2017-06-04 为什么为什么为什么为什么!!!!!!
  • 2017-06-04 用InstallShield制作安装程序
  • 2017-06-05 求助帖关于ShellNamespace右键菜单的问题
  • 2017-06-05 从串口取数,定时显示,怎么协调?
  • 2017-06-04 如何从com里传入传出unsignedchar值?
  • 2017-06-04 如何用C语言调用COM?
  • 2017-06-04 如何获取IPersistStorage接口?
  • 2017-06-05 求助,VC操作Excel中Sheet的接口函数Add,添加完毕后,Excel进程没有退出的问题。
  • 2017-06-04 shell扩展编程,想对所有的文件类型添加一个右键菜单项,请问相应的rgs文件应该怎么写?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • windows服务如何使用普通进程中的com组件?
    • 多线程对话框消失问题
    • DCom程序配置
    • 当应用程序或操作系统向EventLog中的“系统”和“应用程序”写入事件时,会触发哪个Windows消息?
    • SafeArrayGetVartype结果有问题
    • 在常规MFC的DLL初始化中,如何获取DLL_PROCESS_ATTACH等4种通知?我只知道普通的DLLMAIN。
    • 请教,Com高手
    • 在一个进程中定义数组,需要在另一个进程中进行数组中数据的访问,怎么办?谢谢各位!!
    • 怎样现实sortarrow
    • 蔡鸟求救,main函数中argc是怎么赋值的?怎么会有判断条件argc<=1的?多谢!

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有