在用CSerialPort类进行串口通信时候。在Dlg中定义了CSerialPort的类对象 m_SerialPort,同时在Dlg类中 新建一条线程SendDateThread()用于数据的发送。 请问为什么m_SerialPort.WriteToPort 为什么会提示error C2228: left of '.WriteToPort' must have class/struct/union type我明明已经定义过CSerialPort的类对象了。还有个问题,请问如何在线程中调用非静态的成员变量和函数。
在参数里,传类的指针
请问如何传递this指针呢?m_pThread= AfxBeginThread(SendDateThread(),this);//是这里的this吗?是的话在线程函数中怎么调用。
线程函数中;
UINT SendDateThread(LPVOID p)
{
C***Dlg* p1 = (C***Dlg*)p;
}
谢谢回答,这样的话是将类的THIS指针传给p1了吗
int i;
CByteArray arraySend;
byteSend[0]=01;
byteSend[1]=0x06;
byteSend[2]=0x11;
byteSend[3]=0x01;
byteSend[4]=0x00;
byteSend[5]=0x00;
byteSend[6]=0xDC;
byteSend[7]=0xCA;
arraySend.RemoveAll();
arraySend.SetSize(8);
for(i=0;i<8;i++)
{
arraySend.SetAt(i,byteSend[i]);
} m_pCj_Tarck->m_SerialPort.WriteToPort(COleVariant(arraySend));错误提示 error C2664: 'void __thiscall CSerialPort::WriteToPort(char *)' : cannot convert parameter 1 from 'class COleVariant' to 'char *'以前是用CMSCOMM类进行串口通讯,现在想学习下使用CSerialPort类和多线程,遇到不小的麻烦,网上也查了很长时间,但一直不是很理解,各位大侠如果知道的话,不吝赐教!
那么
char charSend[8];
charSend[0]=01;
charSend[1]=0x06;
charSend[2]=0x11;
charSend[3]=0x01;
charSend[4]=0x00;
charSend[5]=0x00;
charSend[6]=0xDC;
charSend[7]=0xCA;
m_pCj_Tarck->m_SerialPort.WriteToPort(charSend);
多了个warning C4305: '=' : truncation from 'const int' to 'char'我试下能不能通讯