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

香港服务器多少钱一个月?香港云服务器最便宜价格

香港服务器多少钱一个月?香港服务器租用配置价格一个月多少,现在很多中小型企业在建站时都会租用香港服务器,租用香港服务器可以使网站访问更流畅、稳定性更好,安全性会更高等等。香港服务器的租用和其他地区的服务器租用配置元素都是一样的,那么为什么香港服务器那么受欢迎呢,香港云服务器最便宜价格多少钱一个月呢?阿里云轻量应用服务器最便宜的是1核1G峰值带宽30Mbps,24元/月,288元/年。不过我们一般选...

小渣云(36元/月)美国VPS洛杉矶 8核 8G

小渣云 做那个你想都不敢想的套餐 你现在也许不知道小渣云 不过未来你将被小渣云的产品所吸引小渣云 专注于一个套餐的商家 把性价比 稳定性 以及价格做到极致的商家,也许你不相信36元在别人家1核1G都买不到的价格在小渣云却可以买到 8核8G 高配云服务器,并且在安全性 稳定性 都是极高的标准。小渣云 目前使用的是美国超级稳定的ceranetworks机房 数据安全上 每5天备份一次数据倒异地 支持一...

VoLLcloud6折限量,香港CMI云服务器三网直连-200M带宽

vollcloud LLC首次推出6折促销,本次促销福利主要感恩与回馈广大用户对于我们的信任与支持,我们将继续稳步前行,为广大用户们提供更好的产品和服务,另外,本次促销码共限制使用30个,个人不限购,用完活动结束,同时所有vps产品支持3日内无条件退款和提供免费试用。需要了解更多产品可前往官网查看!vollcloud优惠码:VoLLcloud终生6折促销码:Y5C0V7R0YW商品名称CPU内存S...

colesafearray为你推荐
天融信防火墙天融信下一代防火墙有那些特点和优势?调度系统现在有很多人说同城调度系统,这是用来干嘛的呀?inode智能客户端iNode 智能客户端windows7上网方法vipjrvipjr跟哒哒英语比,两家公司的区别在哪里?各自的特点有哪些?数秦科技奇秦科技是做什么的,大家了解过吗?spawningVC中Error spawning cl.exe错误的解决方法.spawning在c语言编译时出现Error spawning cl.exe,是怎么回事?微信论坛手机微信论坛如何实现色库photoshop7.0怎么改PANTONE色号系统论坛怎么进论坛
东莞虚拟主机 vps是什么 3322免费域名 独享100m Dedicated 贵州电信宽带测速 青果网 好看的桌面背景图 搜狗12306抢票助手 免费ftp站点 什么是服务器托管 qq云端 网通服务器托管 息壤代理 上海联通宽带测速 双线机房 彩虹云 美国独立日 中国电信网络测速 游戏服务器出租 更多