急问:关于VARIANT变量的使用
在串口通讯中,通过调用API函数,用异步读取的方法读取数据 如下:
// 中间变量
DWORD dwErrorMask;
DWORD dwEvtMask = 0;
DWORD dwActRead = 0;
DWORD dwPoint = 0;
VARIANT Buf;
if (!ReadFile(g_hCom, &Buf+dwPoint, comstat.cbInQue, &dwActRead, &ov))
为什么得到Buf 都是空的阿?? 给别的变量付值时报错,而把Buf改称CString型或者,Char型数组接受都没问题。谢谢!!!
问题点数:100、回复次数:7Top
1 楼shangguancheng(潜龙勿用)回复于 2005-09-23 09:48:58 得分 15
Buf应该是LPVOID类型啊Top
2 楼happyparrot(快乐鹦鹉)回复于 2005-09-23 09:56:24 得分 0
为什么要用VARIANT类型呢?
VARIANT是个结构啊,能一样么Top
3 楼abian_636(又恋槐花香)回复于 2005-09-23 10:02:05 得分 0
因为接受的数据又可能在中间某个字节出现0x00的情况,要是用CString不就表示字符串结束了么?
应该怎么接受啊?例如一条数据为 0x42,0x00,0x11,0x56,应该用什么类型保存啊??
谢谢!!!!Top
4 楼phoenix96_2000(Arcrest)回复于 2005-09-23 10:05:19 得分 50
BYTE * pb = new BYTE[comstat.cbInQue];
ReadFile(g_hCom, pb, comstat.cbInQue, &dwActRead, &ov))Top
5 楼jcqstc(tiancai)回复于 2005-09-23 10:06:39 得分 0
CString可以中间有0x00的吧Top
6 楼happyparrot(快乐鹦鹉)回复于 2005-09-23 10:07:37 得分 20
别用CString啊,用char*或者BYTE*数组就可以了。Top
7 楼loachli(星星)回复于 2005-09-23 10:35:43 得分 15
先用CHAR型BUFFER,然后在转换成variantTop




