|
@@ -47,7 +47,7 @@ canctrl::canctrl(const char * strmemsend0,const char * strmemrecv0,const char *
|
|
|
mpasend0 = iv::modulecomm::RegisterRecv(strmemsend0,Listencansend0);
|
|
|
mpasend1 = iv::modulecomm::RegisterRecv(strmemsend1,Listencansend1);
|
|
|
|
|
|
- mpcan = new nvcan(strcan0name,strcan1name);
|
|
|
+ mpcan = new nvcan(strcan0name,strcan1name,this);
|
|
|
mspcan.reset(mpcan);
|
|
|
connect(mpcan,SIGNAL(SIG_CANOPENSTATE(bool,int,const char*)),this,SLOT(onCANState(bool,int,const char*)));
|
|
|
mpcan->startdev();
|
|
@@ -105,6 +105,9 @@ void canctrl::run()
|
|
|
{
|
|
|
if(mbCANOpen)
|
|
|
{
|
|
|
+ mMutexWait.lock();
|
|
|
+ mwc.wait(&mMutexWait,5);
|
|
|
+ mMutexWait.unlock();
|
|
|
basecan_msg xmsg[2500];
|
|
|
int nRec1,nRec2,nSend1,nSend2;
|
|
|
if((nRec1 =mpcan->GetMessage(0,xmsg,2500))>0)
|
|
@@ -112,12 +115,16 @@ void canctrl::run()
|
|
|
sharecanmsg(mparecv0,xmsg,nRec1,0);
|
|
|
}
|
|
|
|
|
|
+ if((nRec2 =mpcan->GetMessage(1,xmsg,2500))>0)
|
|
|
+ {
|
|
|
+ sharecanmsg(mparecv1,xmsg,nRec1,1);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
|
|
|
nSend1 = 0;
|
|
|
nSend2 = 0;
|
|
|
|
|
|
- msleep(5);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -257,3 +264,8 @@ void canctrl::sharecanmsg(void *xpa, basecan_msg * pxmsg,int ncount,int nch)
|
|
|
}
|
|
|
delete strdata;
|
|
|
}
|
|
|
+
|
|
|
+void canctrl::NotifyRecv()
|
|
|
+{
|
|
|
+ mwc.wakeAll();
|
|
|
+}
|