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()先获得数组数据指针,然后再逐一读出来的。

NameCheap 2021年新年首次活动 域名 域名邮局 SSL证书等

NameCheap商家如今发布促销活动也是有不小套路的,比如会在提前一周+的时间告诉你他们未来的活,比如这次2021年的首次活动就有在一周之前看到,但是这不等到他们中午一点左右的时候才有正式开始,而且我确实是有需要注册域名,等着看看是否有真的折扣,但是实际上.COM域名力度也就一般需要51元左右,其他地方也就55元左右。当然,这次新年的首次活动不管如何肯定是比平时便宜一点点的。有新注册域名、企业域...

Megalayer美国服务器CN2优化线路30M带宽3独立IP限时月299元

Megalayer 商家算是比较新晋的国内主机商,主要方向是美国、香港、菲律宾等机房的独立服务器为主,以及站群服务器和显卡服务器。同时也有新增价格并不是特别优惠的VPS云服务器。上午的时候有网友问问有没有CN2线路的美国独立服务器的,这里我推荐他选择Megalayer看看,目前也是有活动截止到月底的。Megalayer 商家创办2年左右时间,如果我们初次使用建议月付体验。目前在进行且可能截止到6月...

无法忍受旧版不兼容PHP7+主题 更换新主题

今天父亲节我们有没有陪伴家人一起吃个饭,还是打个电话问候一下。前一段时间同学将网站账户给我说可以有空更新点信息确保他在没有时间的时候还能保持网站有一定的更新内容。不过,他这个网站之前采用的主题也不知道来源哪里,总之各种不合适,文件中很多都是他多年来手工修改的主题拼接的,并非完全适应WordPress已有的函数,有些函数还不兼容最新的PHP版本,于是每次出现问题都要去排查。于是和他商量后,就抽时间把...

colesafearray为你推荐
mdmMDM程序有什么用途?删除它对系统有没有威胁?应该怎样删除?元数据管理楼层管理是什么settimermfc里SetTimer和Sleep有什么区别foxmail邮箱注册如何注册FOXMAIL邮箱的帐号啊?oracle索引Oracle中有多少种索引类型网关和路由器的区别网关和路由器的区别和联系在mindmanager破解版求mindmanager 2019 的注册机索引超出了数组界限索引超出了数组界限inode智能客户端inode智能客户端怎么使用wifi?相似图片搜索怎么找手机上的一张相似图片?
免备案虚拟空间 个人域名备案 hostgator 视频存储服务器 mediafire下载工具 免备案空间 韩国电信 http500内部服务器错误 免费防火墙 免费吧 无限流量 丽萨 php服务器 服务器防火墙 德讯 免费主页空间 上海联通 在线tracert wordpress安装 vpsaa 更多