示例#1
0
文件: events.c 项目: sspider/etalis
void triggerEvent_intern_hash(eventType* key, EtalisEvent* event)
{
    /* find from _event_hash the EventModel to follow */

    eventHash tempEventHash;
    eventHash* foundEventNode = NULL;

    memset(&tempEventHash,0,sizeof(eventHash));
    tempEventHash.ev.arity=key->arity;
    strcpy(tempEventHash.ev.name,key->name);

    HASH_FIND(hh,_event_hash,&tempEventHash.ev,sizeof(eventType),foundEventNode);

    /* if EventModel is in the Hash */
    if(foundEventNode != NULL)
    {

        event->RootModel=foundEventNode->myNode;


        newTimeStamp(&event->timestamps[0]);
        event->timestamps[1] = event->timestamps[0];




        debug("--- Triggering event ... %s/%d @ [%ld.%06ld,%ld.%06ld]\n",event->RootModel->event.name,event->RootModel->event.arity,event->timestamps[0].time,event->timestamps[0].parts,event->timestamps[1].time,event->timestamps[1].parts);

        foundEventNode->myNode->trigger(event);
    }


}
SerialLogging::SerialLogging(MainWindow *mainWindow, QSerialPortInfo serialPortDevice, int baudRate, QSerialPort::DataBits dataBits, QSerialPort::Parity parity, QSerialPort::StopBits stopBits)
{
	serialPort = new QSerialPort(serialPortDevice);

	// Open
	int ret = serialPort->open(QIODevice::ReadWrite);

	if (!ret) {
		qDebug() << "Serial port failed to open";
		delete serialPort;
		Q_ASSERT(0);
	} else {
		// Open file
		fileName = mainWindow->getFileName();
		if (fileName != "") {
			file.setFileName(fileName);
			ret = file.open(QIODevice::WriteOnly);
			if (!ret) {
				qDebug() << "File failed to open";
				delete serialPort;
				Q_ASSERT(0);
			}
		}

		// Set start time
		startTime = QDateTime::currentDateTimeUtc();

		// Configure serial port
		serialPort->setBaudRate(baudRate);
		serialPort->setDataBits(dataBits);
		serialPort->setParity(parity);
		serialPort->setStopBits(stopBits);

		connect(this, SIGNAL(serialPortOpened()), mainWindow, SLOT(serialPortConnected()));
		connect(this, SIGNAL(newDataReady(QByteArray, quint64)), mainWindow, SLOT(receivedData(QByteArray, quint64)));
		connect(this, SIGNAL(newTimeStamp(qint64)), mainWindow, SLOT(updateTimer(qint64)));
		emit serialPortOpened();
	}

	// Connect signals
	connect(serialPort, SIGNAL(readyRead()), this, SLOT(readData()));
	connect(mainWindow, SIGNAL(baudRateChanged(int)), this, SLOT(on_baudRateUpdated(int)));
	connect(mainWindow, SIGNAL(dataBitsChanged(QSerialPort::DataBits)), this, SLOT(on_dataBitsUpdated(QSerialPort::DataBits)));
	connect(mainWindow, SIGNAL(parityChanged(QSerialPort::Parity)), this, SLOT(on_parityUpdated(QSerialPort::Parity)));
	connect(mainWindow, SIGNAL(stopBitsChanged(QSerialPort::StopBits)), this, SLOT(on_stopBitsUpdated(QSerialPort::StopBits)));
}
示例#3
0
文件: events.c 项目: sspider/etalis
/*
 * Trigger an event without explicitely defining timestamps
 */
foreign_t triggerEvent_u(term_t args)
{
    atom_t name;
    int arity=0;
    PL_get_name_arity(args,&name,&arity);

    /* find from _event_hash the EventModel to follow */

    eventHash tempEventHash;
    eventHash* foundEventNode = NULL;
    memset(&tempEventHash,0,sizeof(eventHash));
    tempEventHash.ev.arity=arity;
    strcpy(tempEventHash.ev.name,PL_atom_chars(name));

    HASH_FIND(hh,_event_hash,&tempEventHash.ev,sizeof(eventType),foundEventNode);



    /* if EventModel is in the Hash */
    if(foundEventNode != NULL)
    {

        EtalisEvent *myEvent=(EtalisEvent*)malloc(sizeof(EtalisEvent));
        myEvent->RootModel=foundEventNode->myNode;

        if (arity != 0)
            parse_validate_args(args,myEvent);

        newTimeStamp(&myEvent->timestamps[0]);
        myEvent->timestamps[1] = myEvent->timestamps[0];

        /* debg models */
        #ifdef DEBUG
        EtalisEventNode *myModel = myEvent->RootModel;
        EtalisExecNode  *myExec  = myModel->parentNode;
        #endif
        /* f dbg */


        debug("--- Triggering event ... %s/%d @ [%ld.%06ld,%ld.%06ld]\n",myEvent->RootModel->event.name,myEvent->RootModel->event.arity,myEvent->timestamps[0].time,myEvent->timestamps[0].parts,myEvent->timestamps[1].time,myEvent->timestamps[1].parts);

        foundEventNode->myNode->trigger(myEvent);
    }

    PL_succeed;
}
void SerialLogging::readData()
{
	// Get timestamp immediately
	quint64 timeStamp = startTime.msecsTo(QDateTime::currentDateTimeUtc());

	// Read data from serial port
	QByteArray data = serialPort->readAll();

	// Save the data to file
	saveToDisk(data);

	// Send the data to any connected listeners
	emit newDataReady(data, timeStamp);

	// Send out the elapsed time to any connected listeners
	emit newTimeStamp(timeStamp);
}