我用向导添加了一个方法
BOOL CHIDUSBCtrl::Write(const VARIANT FAR& Data)
{
// TODO: Add your dispatch handler code here
if(!IsOpen())
{
return FALSE;
}
LONG length;//数据长度
COleSafeArray safearray_data;
safearray_data=Data; //运行到这里时程序报错误 //忽略上面的错误,运行下面的代码时程序还是报错,
length=safearray_data.GetOneDimSize(); //再忽略上面的错误,运行下面代码没有错误了
BYTE *Buf=new BYTE[length+1];
for(LONG i=0;i<length;i++)
safearray_data.GetElement(&i,Buf+i);
DWORD dw;
OVERLAPPED overlap;
memset(&overlap, 0, sizeof(OVERLAPPED));
//向设备写入一个字符串
BOOL bResult=WriteFile(m_hDevice, Buf, length, &dw, &overlap);
delete Buf;
return bResult;
}
如上方法,功能是向设备写入一个字符串,就像MSComm控件写串口的功能一样请问其中表注的两个错误怎么解决呢
不胜感激!
BOOL CHIDUSBCtrl::Write(const VARIANT FAR& Data)
{
// TODO: Add your dispatch handler code here
if(!IsOpen())
{
return FALSE;
}
LONG length;//数据长度
COleSafeArray safearray_data;
safearray_data=Data; //运行到这里时程序报错误 //忽略上面的错误,运行下面的代码时程序还是报错,
length=safearray_data.GetOneDimSize(); //再忽略上面的错误,运行下面代码没有错误了
BYTE *Buf=new BYTE[length+1];
for(LONG i=0;i<length;i++)
safearray_data.GetElement(&i,Buf+i);
DWORD dw;
OVERLAPPED overlap;
memset(&overlap, 0, sizeof(OVERLAPPED));
//向设备写入一个字符串
BOOL bResult=WriteFile(m_hDevice, Buf, length, &dw, &overlap);
delete Buf;
return bResult;
}
如上方法,功能是向设备写入一个字符串,就像MSComm控件写串口的功能一样请问其中表注的两个错误怎么解决呢
不胜感激!
VARIANTARG * pvargDest,
VARIANTARG * pvargSrc
);试试,能不能完成复制啊。
你怎么调用这个接口的?
添加方法 Write 參數是VARIANT類型我用VB寫的測試程序
先打開設備
然後寫入一個字串
假設控件名字是HIDUSB1HIDUSB1.OpenHIDUSB1.Write "abcdef"
添加方法 Write 参数是VARIANT类型我用VB写的测试程序
先打开设备
然后写入一个字符串
假设控件名字是HIDUSB1HIDUSB1.OpenHIDUSB1.Write "abcdef"我现在试一下这个方法
不胜感激!
請大俠幫幫我喔不勝感激!
程序报什么错误啊?断点停在哪个语句?
我用VB测试这个控件的时候
报的错误就是简单的程序严重错误, 选择: 1终止 2重试 3忽略 我控件断点不知道怎么搞,我是这样的
BOOL CHIDUSBCtrl::Write(const VARIANT FAR& Data)
{
// TODO: Add your dispatch handler code here
if(!IsOpen())
{
return FALSE;
}
LONG length;//数据长度
COleSafeArray safearray_data;
MessageBox(“1”);
safearray_data=Data; //运行到这里时程序报错误
MessageBox(“2”);
//忽略上面的错误,运行下面的代码时程序还是报错,
length=safearray_data.GetOneDimSize();
MessageBox(“3”);
//再忽略上面的错误,运行下面代码没有错误了
BYTE *Buf=new BYTE[length+1];
for(LONG i=0;i<length;i++)
safearray_data.GetElement(&i,Buf+i);
DWORD dw;
OVERLAPPED overlap;
memset(&overlap, 0, sizeof(OVERLAPPED));
//向设备写入一个字符串
BOOL bResult=WriteFile(m_hDevice, Buf, length, &dw, &overlap);
delete Buf;
return bResult;
}
测试在
MessageBox(“1”);
之后,报严重错误,然后点 [忽略]
MessageBox(“2”);
还是错误,继续点忽略
然后MessageBox(“3”);
然后没有错误了
或者是和差不多的ActiveX控件的源程序
不胜感激!
COleSafeArray safearray_data;
改为:
COleVariant safearray_data;
可能是接口定义错误
从外界向ActiveX控件传入一个VARIANT值,参数应该用VARIANT还是VARIANT*类型的呢?
我就使用MFC ActiveX Wizard添加的方法,
好像两个都不行喔!
怎么单步调试ActiveX程序呢?
基本的问题,分不够再加
请做过ActiveX开发的大侠帮帮忙喔不胜感激!
BOOL CHIDUSBCtrl::Write(const VARIANT FAR& Data)
{
// TODO: Add your dispatch handler code here
COleVariant val(Data);
CString str;
if(val.vt == VT_BSTR)
{
str = val.bstrVal;
AfxMessageBox(str);//在VB中会显示这个字符串的。
}
return TRUE;
}
这里仅处理了接收数据并保存到本函数中的过程。