• 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 > 一个简单的MSCOMM控件问题!谢谢了

一个简单的MSCOMM控件问题!谢谢了

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

佚名通过本文主要向大家介绍了 一个简单的MSCOMM控件问题!谢谢了等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 一个简单的MSCOMM控件问题!谢谢了
描述:

1.有个问题折磨我来一下午。。。帮看下。
这个是打开函数


if (m_CtrlCom.GetPortOpen())
{
m_CtrlCom.SetPortOpen(FALSE);
}
m_CtrlCom.SetCommPort(pFrm->iCurrentCom); //选择COM1   
   m_CtrlCom.SetInBufferSize(1024); //接收缓冲区   
m_CtrlCom.SetOutBufferSize(1024);//发送缓冲区   
m_CtrlCom.SetInputMode(1);//以二进制方式读写数据   
m_CtrlCom.SetRThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件   
m_CtrlCom.SetSettings("9600,n,8,1");//波特率9600无检验位,8个数据位,1个停止位 
if(!m_CtrlCom.GetPortOpen())//如果串口没有打开则打开   
{
m_CtrlCom.SetPortOpen(TRUE);//打开串口  
MessageBox("连接成功!");
}
else
{
m_CtrlCom.SetOutBufferCount(0); 
}
m_CtrlCom.GetInput();

这个是OnOnCommMscomm函数

VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
if (m_CtrlCom.GetCommEvent()==2)//事件2 表示 接收缓冲区内有字符
{
  variant_inp=m_CtrlCom.GetInput();//读缓冲区
safearray_inp=variant_inp;//VARIANT型变量转换为COLESAFEARRAY型变量
len=safearray_inp.GetOneDimSize();// 得到有效数据的长度
for(k=0;k<len;k++)
{
  safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
}
for (k=0;k<len;k++)//将数组转换为CString型变量
{
BYTE bt=*(char*)(rxdata+k);//字符型
pFrm->RData[k]=bt;
}
DataCount();
}

运行后,用串口调试工具,发送数据。单步调试到
就出个对话框提示 0x000000005:access violation
发现
variant_inp 显示???
。帮看下 谢谢了!!!!!!!!


解决方案1:

这应该没问题的啊
要不你在设置发送、接受缓冲区大小后面再加句:
m_CtrlCom.SetInputLen(0);//设置当前接收区数据长度为0

解决方案2:

len=safearray_inp.GetOneDimSize();
这一句?是在执行这句之前还是执行之后弹出提示的?
不应该啊。。。
可以打包给我看看,252237099@qq.com


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

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

相关文章

  • 2017-06-04 使用VC7编写HID设备通信程序问题
  • 2017-06-04 我用ATL封装了个类,类中包含一些函数,不是控件,我怎么样在别的程序中调用这个类???????
  • 2017-06-04 word自动化编程,取出其中图片问题
  • 2017-06-05 请教:调试一个dll时,经常显示一个编译错误,请大家指教一下!
  • 2017-06-05 多线程WaitForMultipleObjects一问
  • 2017-06-04 如何得到word有多少页数?
  • 2017-06-04 如何在Internet上调用DCOM组件,大家帮帮忙
  • 2017-06-04 想编写一个支持插件扩展的程序,请大家看看
  • 2017-06-05 请问这个程序有错吗?
  • 2017-06-04 难!难!难!不是高手请勿看!

文章分类

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

最近更新的内容

    • 关于com的几个问题,请大家澄清一下!
    • MFCActiveX控件的对外方法,在接收到非法参数时,怎样报错
    • 有没有做过VC做的COM服务器跟Matlab通信的??帮帮忙
    • 求《windows高级编程指南(第3版)》和《com技术内幕》光盘的内容。
    • 第三方dll能编译进ActiveX吗?
    • 使用网页做控件容器的时候怎样指定当前目录?
    • 有什么工具可以分析某个DLL中的COM对象实现了什么接口?
    • 怎样调用lib?`
    • 无法从流中读取数据请高手帮忙
    • Teechart怎么画3D图

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

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