stefanwe Geschrieben July 29, 2023 at 09:22 Geschrieben July 29, 2023 at 09:22 Hallo, wie im Titel schon gesehen, hab ich begonnen mir die JSlib sauber ins TypeScript umzuschreiben. Im Javascript Code gibt es viele Ungereimtheiten, vieles lässt sich durch Beispiele lösen. Frage nun, ich sehe gerade im Quellcode das "device" benutzt wird, obwohl es nirgends übergeben wird. Ist das ein Fehler oder woher kommt dieses Objekt? BrickletRS485, Zeile 1607 this.modbusSlaveAnswerReadCoilsRequest = function(requestID, coils, returnCallback, errorCallback) { /* In Modbus slave mode this function can be used to answer a master request to read coils. * Request ID: Request ID of the corresponding request that is being answered. * Coils: Data that is to be sent to the Modbus master for the corresponding request. This function must be called from the :cb:`Modbus Slave Read Coils Request` callback with the Request ID as provided by the argument of the callback. */ var coilsLength = 0; var coilsChunkData = []; var coilsChunkOffset = 0; var streamStateObject = this.streamStateObjects[25]; if (coils.length > 65535) { if (errorCallback !== null){ errorCallback(IPConnection.ERROR_INVALID_PARAMETER); } this.resetStreamStateObject(streamStateObject); if (streamStateObject['responseProperties']['callQueue'].length > 0) { streamStateObject['responseProperties']['callQueue'].shift()(device); // <-- wo kommt es her? } return; } Zitieren
rtrbt Geschrieben July 31, 2023 at 10:55 Geschrieben July 31, 2023 at 10:55 Das ist in der Tat ein Fehler, danke für den Hinweis! Die Fehlerbehandlung, die das streamStateObject zurücksetzt usw. gibt es an mehreren Stellen, alle außer dieser sind aber in Hilfsfunktionen, die device als Parameter übergeben bekommen. Das ist laut git blame seit 2017 niemanden aufgefallen. Ich habe das im Generator gefixt: https://github.com/Tinkerforge/generators/commit/fdcc67f1b8f1f210a7aa0d6944f633cab6a9318d und dir neu generierte Bindings angehangen. On 7/29/2023 at 11:22 AM, stefanwe said: Hallo, wie im Titel schon gesehen, hab ich begonnen mir die JSlib sauber ins TypeScript umzuschreiben. Versuchst du auch die Interna zu typisieren, oder nur das Interface nach außen? Eventuell könnten wir das auch generieren. Das für 150 Geräte von Hand zu schreiben stelle ich mir anstrengend vor ;) tinkerforge_javascript_bindings_2_1_34.zip Zitieren
stefanwe Geschrieben July 31, 2023 at 11:04 Autor Geschrieben July 31, 2023 at 11:04 Hallo rtrbt, ich arbeite gerade an den Bricks die ich benutze. Hier ist mein repo: https://github.com/stefanwerfling/tfe In der Tat eine Menge Arbeit. Durch ESLint stelle ich auch if/else`s um. Die Evals hab ich auch entfernt. Knackpunkt ist ESM, ich konnte einfach die JSLib nicht laden für mein Projekt. Meine Idee ist noch später Objekte als Zusatz zu schreiben die mit promis die callback daten dann liefern. Die Original-API soll erhalten bleiben, damit die Dokumentation stimmt. Über alle Typen von den Variablen bin ich mir aber noch nicht bewusst. Das Beste ist, wenn ich alle "any" typen aufklären kann. :) Zitieren
stefanwe Geschrieben August 1, 2023 at 07:29 Autor Geschrieben August 1, 2023 at 07:29 @rtrbt du kannst noch "rolesMappedData" überall außer in der read Methode entfernen, es wird deklariert aber nicht benutzt in den anderen Methoden. (im BrickletRS485) Zitieren
rtrbt Geschrieben August 1, 2023 at 13:58 Geschrieben August 1, 2023 at 13:58 Stimmt, die Variable wird bei Stream-Funktionen in beide Richtungen generiert, aber nur bei Streams vom Bricklet zum PC verwendet. Gefixt: https://github.com/Tinkerforge/generators/commit/aaf854e9 On 7/31/2023 at 1:04 PM, stefanwe said: In der Tat eine Menge Arbeit. Durch ESLint stelle ich auch if/else`s um. Die Evals hab ich auch entfernt. Knackpunkt ist ESM, ich konnte einfach die JSLib nicht laden für mein Projekt. Meine Idee ist noch später Objekte als Zusatz zu schreiben die mit promis die callback daten dann liefern. Die Original-API soll erhalten bleiben, damit die Dokumentation stimmt. Das sind alles gute Punkte. Muss ich mit meinem Kollegen mal besprechen ob und wenn ja wie viel davon wir übernehmen können. Wir melden uns dazu nochmal ;) Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.