Arduino 1.0.6 unterschied zu Arduino 1.6.9

Gast #4646477
Hallo!

Ich habe vor langer Zeit ein Programm in Arduino 1.0.6 geschrieben, 
heute wollte ich etwas verändern und hab dazu schon das neu Arduino 
1.6.9 verwendet. Ohne Veränderung kommt der Fehler:

C:\Program Files 
(x86)\arduino-1.6.9\libraries\ModbusMaster/ModbusMaster.h:88:24: fatal 
error: util/crc16.h: No such file or directory

Könnt Ihr mir bei diesem Problem helfen? (Ich möchte gerne Arduino 
1.6.9) weiter verwenden)

Danke!
Gast
Marc schrieb:
> C:\Program Files
> (x86)\arduino-1.6.9\libraries\ModbusMaster/ModbusMaster.h:88:24: fatal
> error: util/crc16.h: No such file or directory

Die Library wurde nicht eingerichtet.
Du musst die Library noch dem System bekannt machen.
Gast
Habe nun die neue Libary für Modbus installiert. Damit lese ich einen 
SDM630 Zähler aus, senden kann ich aber empfangen nichts.

Hat jemand eine Ahnung ?

Meine SOFT:

#include <ModbusMaster.h>

ModbusMaster node(1,1); //MODBUS PORT UND ADRESSE
static int MAX_ITERATION = 20;
const int SDM_SIZE = 30;
float SDM_Data[SDM_SIZE];


void setup() {
  node.begin(9600);         //ModBus UART
  Serial.begin(9600);
}


void loop() {
for(int i = 0; i < SDM_SIZE;i++)
SDM_Data[i] = -1;

getRTUMore(0x000C,3,7);  // Parameter   7 -   9 Watt
getRTUMore(0x0000,3,1);  // Parameter   1 -   3 Spannung
Serial.print(SDM_Data[1]);
Serial.print(" : ");
Serial.print(SDM_Data[2]);
Serial.print(" : ");
Serial.println(SDM_Data[3]);
delay(1000);
}

boolean getRTUMore(uint16_t m_startAddress,uint8_t m_length,int 
arrayPosition){
  uint16_t result;
  int counter = 0;
  while(counter < MAX_ITERATION)
  {
    digitalWrite(3, HIGH); // TX
    if (node.ku8MBSuccess == node.readInputRegisters(m_startAddress, 
(m_length*2))) {
      for(int i = 0; i < m_length; i++){
        SDM_Data[arrayPosition] = 
reform_uint16_2_float32(node.getResponseBuffer(i*2),node.getResponseBuff 
er((i*2)+1));
        arrayPosition++;
      }
      node.clearResponseBuffer();
      return true;
    }
    counter++;
   digitalWrite(3, LOW);
  }
  return false;
}

float reform_uint16_2_float32(uint16_t u1, uint16_t u2)
{
   uint32_t num = ((uint32_t)u1 & 0xFFFF) << 16 | ((uint32_t)u2 & 
0xFFFF);
    float numf;
    memcpy(&numf, &num, 4);
    return numf;
}
Gast
Ich habe jetzt mal mit dem Scope gemessen. Ich kann nicht erkennen dass 
der Max485 umgeschaltet wird (Richtung) - kann es sein das ich was an 
der ModbusMaster.h etwas verändern muss?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.