none
Werte von Anlagen per ISDN auslesen RRS feed

  • Frage

  • Hi, ich lese von Anlagen (einzelne Windkrafträder) diverse Statusmeldungen per ISDN aus.
    In einer Schleife wird die aktuelle Anlage genommen und dessen Nummer angewählt. (Die einzelnen Anlagen werden vorher aus einer SQL Tabelle ausgelesen.)
    War die Einwahl erfolgreich, wird die nächste Anlage geholt. War die Einwahl nicht erfolgreich, wird die Anlage in eine gesonderte Liste getan und später noch mal angewählt.
    Wie gesagt alles in einer For Next Schleife.

    Durch einen neuen Router habe ich nun die Möglichkeit mich auf 4 Anlagen gleichzeitig einzuwählen.

    Nun weiß ich aber nicht wie ich das bisherige Schleifen einwählen so ändern müßte, das ich mehrere Anlagen aufmal abfrühstücken könnte.
    Angenommen ich hätte 40 Anlagen 4 einzelne Schleifen a 10 Anlagen machen, oder ein ganz anderes Einwahlkonzept?
    Gruss
    Donnerstag, 2. Dezember 2010 08:41

Antworten

  • Hallo Michael

    entscheidend ist hier, welche Klassen/Methoden (ISDN/Router-API? Library) du für die Einwahl+Kommunikation nutzt, und ob diese synchron-blockierend sind, oder asynchron (zB event-basierend).
    Nur wenn diese asynchrone Nutzung ermöglichen, kannst du dies ggf grossteils in eine einzige For-Next Schleife bauen.
    Andernfalls wird meist Multi-Threading nötig, hier für deinen Fall wären es wohl mal 4 Threads. Natürlich braucht es da dann deutlich mehr Code, abseits For-Next.
      [mal ausser ggf noch die .NET 4.0 Parallel-Libs/ Asynch nächstes .NET].

    Vielleicht hast du mal grob den Code der Schleife, oder Doku zur ISDN/Router-API/Lib?

    Donnerstag, 2. Dezember 2010 08:54
  • Die Kommunikation zum Router ist nicht das Problem. Mein Problem ist wie ich das mit den Anlagen mache (welche Anlagen welcher Thread auslesen soll)?
    Die Schleife ist ganz simpel
    For each objAnlage in Anlagen
      telnummer=objAnlage.Telefonnummer
     call Einwahl(telnummer)
    next

    Michael,
    alles hängt dann wohl von
      call Einwahl(telnummer)
    ab, ob dieser wie gesagt blockierend ist  (was hier zu vermuten ist, miss mal die Zeitdauer für einen call!).

    Mit Threads ist insofern dann die grosse Frage, ob 'call Einwahl'   auch thread-safe (parallel) funktioniert.
    Hier ist VB / .NET kaum massgebend (sondern im Prinzip noch alles möglich/machbar),
    sondern die limitierenden Faktoren kommen von dem was hinter  'call Einwahl' genau abläuft  (in der Library?) bzw was deren 'Entwickler/Hersteller'  zulässt/garantiert.
    Wenn du hier nicht umfassendere Details zu 'call Einwahl' schreiben kannst, dann musst du besser den 'Entwickler/Hersteller' fragen.
    Donnerstag, 2. Dezember 2010 13:06

Alle Antworten

  • Hallo Michael

    entscheidend ist hier, welche Klassen/Methoden (ISDN/Router-API? Library) du für die Einwahl+Kommunikation nutzt, und ob diese synchron-blockierend sind, oder asynchron (zB event-basierend).
    Nur wenn diese asynchrone Nutzung ermöglichen, kannst du dies ggf grossteils in eine einzige For-Next Schleife bauen.
    Andernfalls wird meist Multi-Threading nötig, hier für deinen Fall wären es wohl mal 4 Threads. Natürlich braucht es da dann deutlich mehr Code, abseits For-Next.
      [mal ausser ggf noch die .NET 4.0 Parallel-Libs/ Asynch nächstes .NET].

    Vielleicht hast du mal grob den Code der Schleife, oder Doku zur ISDN/Router-API/Lib?

    Donnerstag, 2. Dezember 2010 08:54
  • Hallo Thomas

    also würdest du das in 4 einzelnen Threads abarbeiten? Die Kommunikation zum Router ist nicht das Problem. Mein Problem ist wie ich das mit den Anlagen mache (welche Anlagen welcher Thread auslesen soll)?
    Die Schleife ist ganz simpel
    For each objAnlage in Anlagen
      telnummer=objAnlage.Telefonnummer
     call Einwahl(telnummer)
    next

     

    Donnerstag, 2. Dezember 2010 12:50
  • Die Kommunikation zum Router ist nicht das Problem. Mein Problem ist wie ich das mit den Anlagen mache (welche Anlagen welcher Thread auslesen soll)?
    Die Schleife ist ganz simpel
    For each objAnlage in Anlagen
      telnummer=objAnlage.Telefonnummer
     call Einwahl(telnummer)
    next

    Michael,
    alles hängt dann wohl von
      call Einwahl(telnummer)
    ab, ob dieser wie gesagt blockierend ist  (was hier zu vermuten ist, miss mal die Zeitdauer für einen call!).

    Mit Threads ist insofern dann die grosse Frage, ob 'call Einwahl'   auch thread-safe (parallel) funktioniert.
    Hier ist VB / .NET kaum massgebend (sondern im Prinzip noch alles möglich/machbar),
    sondern die limitierenden Faktoren kommen von dem was hinter  'call Einwahl' genau abläuft  (in der Library?) bzw was deren 'Entwickler/Hersteller'  zulässt/garantiert.
    Wenn du hier nicht umfassendere Details zu 'call Einwahl' schreiben kannst, dann musst du besser den 'Entwickler/Hersteller' fragen.
    Donnerstag, 2. Dezember 2010 13:06