void Connector::startWrite(qint8 start, qint8 num, QByteArray data) { qDebug()<<"Connector::startWrite"; QByteArray toWrite(writeOp, 10); toWrite[0] = toWrite[0] + data.size(); toWrite[8] = start; toWrite[9] = num; toWrite.append(data); write(toWrite); waitForBytesWritten(500); emit writeOK(); }
void MainWindow::dataToPLC() { SerialCommunication link; link.setVars(vars); CommunicationDialog* dialog = new CommunicationDialog; link.setData(lcd->getData()); link.setFont(font); dialog->setMessage("Поиск устройства"); connect(&link,SIGNAL(searchStep(float)),dialog,SLOT(updatePercent(float))); connect(&link,SIGNAL(searchError(QString)),dialog,SLOT(setMessage(QString))); connect(&link,SIGNAL(searchOK(QString)),dialog,SLOT(setMessage(QString))); connect(&link,SIGNAL(writeStep(float)),dialog,SLOT(updatePercent(float))); connect(&link,SIGNAL(writeError(QString)),dialog,SLOT(setMessage(QString))); connect(&link,SIGNAL(writeOK(QString)),dialog,SLOT(setMessage(QString))); link.searchController(); dialog->exec(); delete dialog; }
Tick BridgeClassicToAMBATLM2<BUSWIDTH>::recvAtomic(PacketPtr pkt) { tlm::tlm_generic_payload trans; // std::cout << "In " << sc_core::sc_object::name() << " at time " << sc_time_stamp() << " request from GEM5 with address=0x" << hex << pkt->getAddr() << dec << " size=" << pkt->getSize() << std::endl; if (pkt->memInhibitAsserted()) { return 0; } if (pkt->cmd == MemCmd::SwapReq) { panic("SwapReq not supported\n"); } else if (pkt->isRead()) { assert(!pkt->isWrite()); if (pkt->isLLSC()) { trackLoadLocked(pkt); } // if (pkt->isLLSC()) // { // panic("isLLSC not yet supported for atomic\n"); // } trans.set_read(); trans.set_address(pkt->getAddr()); trans.set_data_length(pkt->getSize()); trans.set_data_ptr(pkt->getPtr<unsigned char>()); debug_port->transport_dbg(static_cast<tlm::tlm_generic_payload &>(trans)); unsigned char * data = pkt->getPtr<unsigned char>(); // std::cout << "In " << sc_core::sc_object::name() << " at time " << sc_time_stamp() << " sending a READ response to GEM5 with address=0x" << hex << pkt->getAddr() << dec << " size=" << pkt->getSize(); // std::cout << hex << " and data= ["; // for(unsigned j=0;j<pkt->getSize(); j++) // std::cout << "0x" << uint32_t(data[j]) << ","; // std::cout << "]" << dec << std::endl; } else if (pkt->isWrite()) { // std::cout << "isWrite " << std::endl; if (writeOK(pkt)) { trans.set_write(); /*if (writeOK(pkt)) { if (pmemAddr) memcpy(hostAddr, pkt->getPtr<uint8_t>(), pkt->getSize()); assert(!pkt->req->isInstFetch()); }*/ trans.set_address(pkt->getAddr()); trans.set_data_length(pkt->getSize()); trans.set_data_ptr(pkt->getPtr<unsigned char>()); debug_port->transport_dbg(static_cast<tlm::tlm_generic_payload &>(trans)); } else std::cout << "recvAtomic !writeOK " << hex << pkt->getAddr() << dec << std::endl; } else if (pkt->isInvalidate()) { //upgrade or invalidate if (pkt->needsResponse()) { pkt->makeAtomicResponse(); } } else { panic("unimplemented"); } if (pkt->needsResponse()) { pkt->makeAtomicResponse(); } return 1000; }