我有编写以下下一个回调函数,需要传出一个字符串
BOOL CToolCanClientDlg::DataSend(int _Commandword ,byte * _sBuff,UINT _sBuffLen,LPCTSTR _outstring,UINT _outstart ,UINT _outlen)
{
byte rBuff[128];
memset(rBuff,0,128);
m_com.ClearReadBuffer();
m_com.Write(_sBuff,_sBuffLen);
for (UINT i =0 ;i<2;i++)
{
m_data.delayTime(500);
m_com.Read(rBuff,128);
if ((rBuff[0]==((byte)(_Commandword>>8))) && (rBuff[1]==((byte)(_Commandword))))
{
CString strVal;
for (UINT i=_outstart;i<_outstart+_outlen;i++)
{
CString strVal_1;
strVal_1.Format(_T("%02x"),rBuff[i]);
strVal+=strVal_1;
}
_outstring=strVal;
return TRUE;
}
return FALSE;
}
return FALSE;我在以下函数中调用它
LPCTSTR LOCMAC;
BOOL blResult=DataSend(ORD_ETCLOCINFO,sBuff,6,LOCMAC,16,6);发现LOCMAC为=="" 调试信息为 指针错误进入调试红字部分的是正常的 就是传递不出来
请问这是怎么回事?
BOOL CToolCanClientDlg::DataSend(int _Commandword ,byte * _sBuff,UINT _sBuffLen,LPCTSTR _outstring,UINT _outstart ,UINT _outlen)
{
byte rBuff[128];
memset(rBuff,0,128);
m_com.ClearReadBuffer();
m_com.Write(_sBuff,_sBuffLen);
for (UINT i =0 ;i<2;i++)
{
m_data.delayTime(500);
m_com.Read(rBuff,128);
if ((rBuff[0]==((byte)(_Commandword>>8))) && (rBuff[1]==((byte)(_Commandword))))
{
CString strVal;
for (UINT i=_outstart;i<_outstart+_outlen;i++)
{
CString strVal_1;
strVal_1.Format(_T("%02x"),rBuff[i]);
strVal+=strVal_1;
}
_outstring=strVal;
return TRUE;
}
return FALSE;
}
return FALSE;我在以下函数中调用它
LPCTSTR LOCMAC;
BOOL blResult=DataSend(ORD_ETCLOCINFO,sBuff,6,LOCMAC,16,6);发现LOCMAC为=="" 调试信息为 指针错误进入调试红字部分的是正常的 就是传递不出来
请问这是怎么回事?
TCHAR*_outstring赋值的时候:
_tcscpy(_outstring,(LPCTSTR)strVal);
wcscpy((wchar_t *)_outstrin, strVal.GetBuffer());//应该用copy
_outstrin = strVal;//不能用赋值