git-svn-id: svn://db.shs.com.ru/libs@156 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2017-01-13 15:00:39 +00:00
parent 63b6227a17
commit 36ed688973

View File

@@ -286,6 +286,11 @@ void ConnectionEdit::recreateConnection() {
conn->setDeviceName(dev, Q2PIString(di->name())); conn->setDeviceName(dev, Q2PIString(di->name()));
PIDiagnostics * diag = conn->diagnostic(dev); PIDiagnostics * diag = conn->diagnostic(dev);
if (diag) diag->setDisconnectTimeout(di->disconnectTimeout()); if (diag) diag->setDisconnectTimeout(di->disconnectTimeout());
}
foreach (BlockItem * b, devs) {
DeviceItem * di = (DeviceItem*)b;
PIIODevice * dev = conn->deviceByName(Q2PIString(di->name()));
if (!dev) continue;
BlockItemPin * p = b->pinByText("read"); BlockItemPin * p = b->pinByText("read");
if (!p) continue; if (!p) continue;
QList<BlockBusItem*> buses = p->connectedBuses(), nbuses; QList<BlockBusItem*> buses = p->connectedBuses(), nbuses;
@@ -305,19 +310,19 @@ void ConnectionEdit::recreateConnection() {
bi_f = (cb[0]); bi_f = (cb[0]);
} }
if (!fi_t || !bi_f) continue; if (!fi_t || !bi_f) continue;
QString name_from; PIString name_from;
int type = bi_f->propertyByName("__type").value.toInt(); int type = bi_f->propertyByName("__type").value.toInt();
if (type == __CV_Device) name_from = ((DeviceItem*)bi_f)->path(); if (type == __CV_Device) name_from = Q2PIString(((DeviceItem*)bi_f)->name());
if (type == __CV_Filter) name_from = ((FilterItem*)bi_f)->name(); if (type == __CV_Filter) name_from = Q2PIString(((FilterItem*)bi_f)->name());
if (name_from.isEmpty()) continue; if (name_from.isEmpty()) continue;
PIPacketExtractor * pe = conn->addFilter(Q2PIString(fi_t->name()), Q2PIString(name_from), fi_t->mode()); PIPacketExtractor * pe = conn->addFilter(Q2PIString(fi_t->name()),conn->deviceByName(name_from), fi_t->mode());
if (!pe) continue; if (!pe) continue;
pe->setHeader(PIByteArray::fromString(Q2PIString(fi_t->header()))); pe->setHeader(PIByteArray::fromString(Q2PIString(fi_t->header())));
pe->setFooter(PIByteArray::fromString(Q2PIString(fi_t->footer()))); pe->setFooter(PIByteArray::fromString(Q2PIString(fi_t->footer())));
pe->setTimeout(fi_t->timeout()); pe->setTimeout(fi_t->timeout());
pe->setPacketSize(fi_t->packetSize()); pe->setPacketSize(fi_t->packetSize());
pe->setPayloadSize(fi_t->packetSize()); pe->setPayloadSize(fi_t->packetSize());
diag = conn->diagnostic(pe); PIDiagnostics * diag = conn->diagnostic(pe);
if (diag) diag->setDisconnectTimeout(fi_t->disconnectTimeout()); if (diag) diag->setDisconnectTimeout(fi_t->disconnectTimeout());
QList<BlockBusItem*> nb = fi_t->pinByText("out")->connectedBuses(); QList<BlockBusItem*> nb = fi_t->pinByText("out")->connectedBuses();
foreach (BlockBusItem * b_, nb) foreach (BlockBusItem * b_, nb)
@@ -355,10 +360,10 @@ void ConnectionEdit::recreateConnection() {
if (!si->data().isEmpty()) if (!si->data().isEmpty())
conn->setSenderFixedData(Q2PIString(si->name()), PIByteArray::fromString(Q2PIString(si->data()))); conn->setSenderFixedData(Q2PIString(si->name()), PIByteArray::fromString(Q2PIString(si->data())));
} else { } else {
if (type == __CV_Device) name_from = ((DeviceItem*)bi_f)->path(); if (type == __CV_Device) name_from = ((DeviceItem*)bi_f)->name();
if (type == __CV_Filter) name_from = ((FilterItem*)bi_f)->name(); if (type == __CV_Filter) name_from = ((FilterItem*)bi_f)->name();
if (name_from.isEmpty()) continue; if (name_from.isEmpty()) continue;
conn->addChannel(Q2PIString(name_from), Q2PIString(di_t->path())); conn->addChannel(Q2PIString(name_from), Q2PIString(di_t->name()));
} }
} }
} }