while (!m_pRecordset->adoEOF)//遍历所有记录
{
TheValue = m_pRecordset->GetCollect("port");
cPort=_com_util::ConvertBSTRToString(_bstr_t(TheValue));
strPort=*cPort;
pThread_com[i]=AfxBeginThread(ThreadFunc_com,(LPVOID)cPort);
m_pRecordset->MoveNext(); //转到下一条纪录
i=i+1;
}
{
TheValue = m_pRecordset->GetCollect("port");
cPort=_com_util::ConvertBSTRToString(_bstr_t(TheValue));
strPort=*cPort;
pThread_com[i]=AfxBeginThread(ThreadFunc_com,(LPVOID)cPort);
m_pRecordset->MoveNext(); //转到下一条纪录
i=i+1;
}
解决方案 »
- CComQIPtr比CComPtr的好处在于哪里? 不再需要显示调用QueryInterface了?
- TRACE 不能显示全部信息的问题
- 急!!!如何将设备相关的位图显示在另外一个窗口
- WH_GETMESSAGE 钩子, 为什么无法丢弃消息
- 如何上鼠标移动一个控件上(如Button),光标边即有一提示条显示该控件功能?
- 小弟我想买一台打印机,然后把网上的一些经典的编程电子书分章节打印下学习,不知道可行否,大家有没有很好的解决方案?
- 用DirectShow能播放CD吗?(cda文件)
- 注册表问题
- 想给CListCtrl控件添加OnLvnItemchanged消息响应,但提示说重载函数已经存在...
- mfc编程问题...SetWindowText(fileName);
- 求救,谁能给个串口发送文件的例子我啊?
- 有关中级程序员考试的一些事宜
{
DWORD style=WS_VISIBLE|WS_CHILD;
if (!theDlg.m_ComArray[port].Create(NULL,style,CRect(0,0,0,0),&theDlg,IDC_MSCOMM1))
{
AfxMessageBox(" no create!");
return 0;
}
else
{
if (theDlg.m_ComArray[port].GetPortOpen()==TRUE) theDlg.m_ComArray[port].SetPortOpen(FALSE);
theDlg.m_ComArray[port].SetCommPort(port);
if(theDlg.m_ComArray[port].GetPortOpen()==FALSE) //打开串口
{
theDlg.m_ComArray[port].SetPortOpen(TRUE);
while (true)
{
CTime time=CTime::GetCurrentTime();
int i=0;
if (time.GetMinute()%interval==0) {
theApp.Bdata(&theDlg.m_ComArray[port],strERTU);
} Sleep(60*1000);
}
}
}
return 0;
}
另外,调试时先后有2个提示:
first-chance exception in com.exe(KERNEL32.DLL):0xE06D7363 Microsoft C++ ExceptionUnhandled Exception in com.exe (MFC42.DLL) 0xC0000005 Access Violation
错误发生在该函数里
m_pCommand->CommandText=_bstr_t("insert into tenergydata(meter_id,datetime,za,fa,zr,fr,r1,r2,r3,r4) values(")+_bstr_t(TheValue)+_bstr_t(",'"+addTime+"',"+za+","+fa+","+zr+","+fr+","+r1+","+r2+","+r3+","+r4+")");
MSVCRT! 7800b78d()
_com_error::_com_error(_com_error * const 0x00000000 {???}, long -2147217873, IErrorInfo * 0x012988d8, unsigned char 216) address 0x0040f087
_com_issue_errorex(long -2147217873, IUnknown * 0x012988d8, const _GUID & {1F8BF778-0001-0000-6084-290160842901}) + 93 bytes
_com_issue_errorex(long -2147217873, IUnknown * 0x01261e48, const _GUID & {IID_Command15}) + 93 bytes
COM_MFC! Command15::Execute(struct tagVARIANT *,struct tagVARIANT *,long) line 246
COM_MFC! CCOM_MFCApp::Bdata(class CMSComm *,class CString) line 750 + 51 bytes
COM_MFC! ThreadFunc_com(void *) line 377
MFC42! 6bc50185()
MSVCRT! 780060ce()
KERNEL32! 77e6b2d8()
把
_variant_t TheValue
TheValue = m_pRecordset_com->GetCollect("port"); (debug时提示此句有错误)改为
_variant_t TheValue = m_pRecordset_com->GetCollect(_variant_t("port"));有人 知道这是为什么么?