colesafearraysafearray_inp=variant_inp 出错

colesafearray  时间:2021-07-11  阅读:()

COleSafeArray在串口通信中要怎么使用

#define DIM 1 #define LEN 9 void CTestDlg::OnTest() { BYTE i1vTest[LEN] = ; SAFEARRAYBOUND sab[DIM]; sab[0].cElements = LEN; sab[0].lLbound = 0; SAFEARRAY* psa = NULL; psa = SafeArrayCreate(VT_UI1, DIM, sab); for(long i = 0; i < LEN; i++){ SafeArrayPutElement(psa, &i, &(i1vTest[i])); } VARIANT vt; vt.vt = VT_ARRAY|VT_UI1; vt.parray = psa; COleSafeArray sa; sa = vt; DWORD dwLen = sa.GetOneDimSize(); CString str; str.Format("%d", dwLen); MessageBox(str); } --------------------------------------------------------------------------------- 我写了这样的一个测试程序,感觉问题应该处在你的“第一步”,也就是说,你未必完全正确的从串口缓冲区获得了有效的VARIANT数据。

串口接收数据怎样存储在数组中呢?

Dim Buffer as Variant 表示声明了一个Buffer变量,但是这个Buffer变量的类型不确定,可以是Long、Integer、Double、Object、String以及数组等等,Buffer变量的类型由编译器自行判断与转换。

Dim Buffer(100) as Variant 表示声明了一个数组Buffer,该数组有100个成员,数组的每一个成员都没有指定具体的数据类型,由编译器自行判断与转换 Dim receive(100) as Byte 表示声明了一个数组receive,该数组有100个成员,数组的每一个成员都是Byte型。

Dim Buffer() as Byte 表示声明了一个数组Buffer,该数组成员数目未知,数组的每一个成员都是Byte型。

在确定数组成员数量之前是不能通过Buffer(xx)的这种方式访问Buffer里的成员的。

Dim Buffer() as Byte ....... '接受 ........ Buffer = m.Input 这种方法实际上是把m接收缓存里的所有数据读出来并保存到Buffer数组中,Buffer数组的大小由m接收缓存实际缓存的数据量决定,因为m的接收缓存里实际的数据量是不确定的,所以不能使用 Dim Receive(100) as Byte ....... 接受数据 Receive = m.Input 这样的方式。

Dim Receive(100) as Byte ....... 接受数据 Receive(i) = m.Input 这样是可以的,这样实际上是一次从m的接收缓存里读一个字节的数据,你这样做不行估计是因为数据传输速率和RThreshold设定的问题,因为赋值语句运行的时间要远比串口传输速率快很多倍,所以你必须等m的接收缓存里有100个字节以上的数据时你才能通过循环用m.Input依次读出100个字节的数据,否则就肯定会出错,所以如果你把RThreshold设定为100,也就是每收到100个字节的数据触发一次OnComm事件就可以通过Receive(i) = m.Input把数据读出来。

safearray_inp=variant_inp 出错

safearray_inp.GetElement(&k,rxdata+k); 错在这句,应该是safearray_inp.GetElement(k,rxdata+k); 你参考一下MSDN就知道了 COleSafeArray::GetElement()的说明 Retrieves a single element of the safe array. void GetElement( long* rgIndices, void* pvData ); Parameters rgIndices Pointer to an array of indexes for each dimension of the array. pvData Pointer to the location to place the element of the array. 我正在也用MSCOMM控件做了串口通信的程序。

不过我用的是COleSafeArray::essData()先获得数组数据指针,然后再逐一读出来的。

Hostodo(年付$34.99), 8TB月流量 3个机房可选

Hostodo 算是比较小众的海外主机商,这次九月份开学季有提供促销活动。不过如果我们有熟悉的朋友应该知道,这个服务商家也是比较时间久的,而且商家推进活动比较稳,每个月都有部分活动。目前有提供机房可选斯波坎、拉斯维加斯和迈阿密。从机房的地理位置和实际的速度,中文业务速度应该不是优化直连的,但是有需要海外业务的话一般有人选择。以前一直也持有他们家的年付12美元的机器,后来用不到就取消未续约。第一、开...

优林云(53元)哈尔滨电信2核2G

优林怎么样?优林好不好?优林 是一家国人VPS主机商,成立于2016年,主营国内外服务器产品。云服务器基于hyper-v和kvm虚拟架构,国内速度还不错。今天优林给我们带来促销的是国内东北地区哈尔滨云服务器!全部是独享带宽!首月5折 续费5折续费!地区CPU内存硬盘带宽价格购买哈尔滨电信2核2G50G1M53元直达链接哈尔滨电信4核4G50G1M83元直达链接哈尔滨电信8核8G50G1M131元直...

wordpress外贸企业主题 wordpress经典外贸企业建站主题

WordPress经典外贸企业建站主题,经典配色扁平化简约设计+跨屏自适应移动端设备,特色外贸企业建站功能模块+在线Inquiry询单功能,更有利于Google等英文搜索优化和站点收录。采用标准的HTML5+CSS3语言开发,兼容当下的各种主流浏览器: IE 6+(以及类似360、遨游等基于IE内核的)、Firefox、Google Chrome、Safari、Opera等;同时支持移动终端的常用...

colesafearray为你推荐
bloomfilterJAVA怎么弄爬虫showwindowC#中showwindow控件在哪里??知识库管理系统知识库管理软件与档案管理软件有什么区别查字网拐字换什么偏旁 成新字oracle索引什么是Oracle的函数索引?数秦科技数秦科技旗下有哪些区块链项目?radius认证如何写一个C#的Radius认证客户端faq是什么意思fans是什么意思?社工库网站怎么找社工库?medias请帮我详细解释一下 chronological order和in medias res
php主机空间 万网免费域名 zpanel justhost jsp主机 好看的桌面背景大图 万网优惠券 帽子云 免费个人空间 可外链网盘 drupal安装 申请网站 net空间 accountsuspended alexa世界排名 ipower so域名 卡巴下载 vi命令 深圳车牌摇号申请网站 更多