diff --git a/drv/b15f.cpp b/drv/b15f.cpp index f5a68d4..a76e5a2 100644 --- a/drv/b15f.cpp +++ b/drv/b15f.cpp @@ -28,15 +28,17 @@ void B15F::init() tcflush(usart, TCIFLUSH); std::cout << "OK" << std::endl; - - // verwerfe Daten, die µC noch hat - discard(); // Verbindungstest muss dreimal erfolgreich sein std::cout << PRE << "Teste Verbindung... " << std::flush; for(uint8_t i = 0; i < 3; i++) + { + // verwerfe Daten, die µC noch hat + discard(); + if(!testConnection()) throw DriverException("Verbindungstest fehlgeschlagen. Neueste Version im Einsatz?"); + } std::cout << "OK" << std::endl; @@ -219,21 +221,20 @@ uint16_t B15F::analogeEingabe(uint8_t channel) } } -bool B15F::analogEingabeSequenz(uint16_t* buffer_a, uint16_t* buffer_b, uint32_t offset_a, uint32_t offset_b, uint16_t start, uint16_t delta, uint16_t count) +bool B15F::analogEingabeSequenz(uint8_t channel_a, uint16_t* buffer_a, uint32_t offset_a, uint8_t channel_b, uint16_t* buffer_b, uint32_t offset_b, uint16_t start, int16_t delta, uint16_t count) { try { - writeByte(RQ_ADC_DAC_STROKE); + writeByte(RQ_ADC_DAC_STROKE); + writeByte(channel_a); + writeByte(channel_b); writeInt(start); - writeInt(delta); + writeInt(static_cast(delta)); writeInt(count); uint8_t aw = readByte(); if(aw != MSG_OK) - { - std::cout << "nein: " << (int) aw << std::endl; throw DriverException("Mikrocontroller nicht synchronisiert"); - } for(uint16_t i = 0; i < count; i++) { @@ -248,7 +249,7 @@ bool B15F::analogEingabeSequenz(uint16_t* buffer_a, uint16_t* buffer_b, uint32_t catch(DriverException& de) { reconnect(); - return analogEingabeSequenz(buffer_a, buffer_b, offset_a, offset_b, start, delta, count); + return analogEingabeSequenz(channel_a, buffer_a, offset_a, channel_b, buffer_b, offset_b, start, delta, count); } } diff --git a/drv/b15f.h b/drv/b15f.h index 809b869..d2c187c 100644 --- a/drv/b15f.h +++ b/drv/b15f.h @@ -34,7 +34,7 @@ public: bool analogeAusgabe0(uint16_t); bool analogeAusgabe1(uint16_t); uint16_t analogeEingabe(uint8_t); - bool analogEingabeSequenz(uint16_t*, uint16_t*, uint32_t, uint32_t, uint16_t, uint16_t, uint16_t); + bool analogEingabeSequenz(uint8_t channel_a, uint16_t* buffer_a, uint32_t offset_a, uint8_t channel_b, uint16_t* buffer_b, uint32_t offset_b, uint16_t start, int16_t delta, uint16_t count); // Serielle Verbindung inline void writeByte(uint8_t); diff --git a/drv/b15f.o b/drv/b15f.o index 3342308..fd40214 100644 Binary files a/drv/b15f.o and b/drv/b15f.o differ diff --git a/main b/main index 8884305..9f0ce44 100755 Binary files a/main and b/main differ diff --git a/main.cpp b/main.cpp index d1e47cf..7be05dc 100644 --- a/main.cpp +++ b/main.cpp @@ -19,7 +19,7 @@ int main() uint16_t ba[1024]; uint16_t bb[1024]; - drv.analogEingabeSequenz(&ba[0], &bb[0], 0, 0, 0, 10, 100); + drv.analogEingabeSequenz(1, &ba[0], 0, 0, &bb[0], 0, 1000, -10, 101); std::cout << "Schluss." << std::endl; } diff --git a/main.o b/main.o index d8d54c6..a000f65 100644 Binary files a/main.o and b/main.o differ