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