Skip naar artikel

Schrijven met scripts

Scripts zijn een speciaal applicatiemechanisme voor het verzenden en verwerken van instructies op een sequentiële manier. Ze kunnen de instellingen van de transceptorprogramma-bord configureren, het transceptor geheugen lezen en schrijven en andere operaties uitvoeren.

Gebruik scripts wanneer een transceptor een programmeringsprocedure vereist die verschilt van de standaard MSA en een reeks speciale instructies nodig heeft om geheugenwijzigingen met succes te redden. Scripts kunnen ook herhaalde programmering van verschillende transceiver geheugengebieden met minimale operator betrokkenheid automatiseren.


Hoe gebruik ik een script?

  1. Open het menu Control - Schrijf met een script - Selecteer een scriptbestand om de scriptbestand pad te specificeren;
  2. Zorg ervoor dat de redacteur de juiste code bevat als het script tijdens de uitvoering editorgegevens gebruikt;
  3. Klik op de transceptor geheugen schrijf knop om het script te runnen.

Bij het uitvoeren van een script ignoreert de applicatie de momenteel geselecteerde bepalingen van het geheugengebied. De lees- en schrijfgebieden moeten in de scriptcommandes worden aangegeven.

Houd er rekening mee dat de software niet verificeert of het schrijven succesvol is na het beëindigen van een script.


Hoe kan ik het geselecteerde script verduidelijken?

Ga naar het menu Control - Schrijf met een script - Reset script om het geselecteerde script te verwijderen en terug te keren naar standaard schrijven.


Hoe maak ik een script?

Script command syntax is gebaseerd op het SFPTotal command protocol.

Voorbeeld:

// Write password AABBCCDD to page A2 at offset 7B
w2A2007B03AABBCCDD
// Write the code from the editor to page A0 at offset 00
w2A000007F{00;7F}
// Write value 80 to page A2 at offset 7F
w2A2007F0080
// Write value 01 to page A2 at offset FF
w2A200FF0001
PAUSE
// Read code from page A0 at offset 00
R2A000007F

Maak een tekstbestand en voer één instructie per lijn in. Speel het scriptbestand om deze programmeringsprocedure in de applicatie te gebruiken.


Aanvullende scriptbevelingen

De volgende aanvullende bestellingen worden verwerkt door de aanvraag.

PAUSE

Pause script uitvoering. De standaard pauze is 100 ms.

Een optionele parameter bepaalt de pauze duur in milliseconden.

PAUSE
Delay 100ms
PAUSE=2000
Delay 2000ms


SETCHECKSUM

Herberek de checksum.


SETVAL

Stel de editorcel op offset XX om YY te waardeeren. Specificeer parameterwaarden in het bovenste HEX-formaat.

De offsetparameters accepteren waarden van 00 tot 7F.

SETVAL 7F 03


{00;7F}

De vervanging van de macro {XX;YY} wordt gebruikt binnen andere commando's om een code segment van de editor in te voeren. Tijdens het uitvoeren van de script wordt de macro automatisch vervangen door de huidige editorgegevens die beginnen bij de byte XX en de YY-byten uitbreiden.

Let op dat een YY parameter waarde van 00 in HEX betekent dat 1 byte wordt vervangen, terwijl een waarde van 7F in HEX betekent dat 128 byten worden vervangen. Set YY naar de segmentlengte in byten minus één, uitgedrukt in hexadecimal.

Voorbeeld: schrijven van een 128-byte segment naar pagina A2h op offset 80h.

w2A200807F{00;7F}

Voorbeeld: schrijven van een 96-byte DDM grenssegment naar pagina A2h op offset 00h, gevolgd door een lezing.

W2A200005F{00;5F}

Voorbeeld: een variabele toewijzen van het 16-byte code segment op de offset 0x44 dat het serienummer bevat.

$VAR2={44;0F}


$VAR1

Buffer variabele $VAR1. Gebruik buffervariabelen om codegmenten van de editor te bewaren en hun inhoud in te voeren tijdens het uitvoeren van de script.

De applicatie ondersteunt de 10 buffer variabelen, $VAR0–$VAR9.

$VAR1={00;43}
$VAR2={44;0F}
$VAR3={54;2B}
$VAR4=002AFE
$VAR5=4F


$YYYY

Voer het huidige jaar in de commando.


$MM

Voer de huidige maand in de opdracht.


$DD

Voer de huidige dag in het commando.


BACKUPTOFILE

Start een back-up voor het type module dat is geselecteerd in de applicatieinstellingen. De applicatie leest de beschikbare pagina's sequentieel en slaat de gegevens op in een bestand. Dit bevel is gelijk aan het invoceren van de functie uit het applicatiemenu.


BACKUPDIR

Stel de backup directory op. Er kunnen extra parameters worden gebruikt om een directory met een specifieke naam te maken.

Voorbeeld: een back-up directory maken met de datum in zijn naam.

$VAR5=SOMETEXT
BACKUPDIR=\$YYYY-$MM-$DD_$VAR5\
BACKUPTOFILE


IMPORTFILE

Import HEX code uit een binaire bestand in de editor.

IMPORTFILE=\catalog\filename.bin


IMPORTHEX

Import HEX code in de editor.

Voorbeeld: het importeren van een 128-byte code segment in de editor.

IMPORTHEX=030407100000000000000006670000000802001E4F454D2020202020202020202020202000000B4053465031302D535220202020202020204120202003520091001A000058473936535230313020202020202020303830393236202068F0031200001111A8DD05AA642FAA6F5A64DAF3285A9D000000000000000000F05E482F

Import code in de editor door buffervariabelen te concateneren.

$VAR1={00;43}
$VAR2={44;0F}
$VAR3={54;2B}
IMPORTHEX=$VAR1$VAR2$VAR3


INCREMENT

Verhoog de waarde van een variabele met een hexadecimale vertegenwoordiging van code, zodat het aantal aan het einde van de tekstvertegenwoordiging met één wordt verhoogd.

Bijvoorbeeld de tekstrepresentatie van de variabele SN129YY00201 wordt omgezet naar SN129YY00202.

Als de zeros de numerieke portie voorafgaat, probeert de applicatie de oorspronkelijke strengte te behouden wanneer het verhoogde getal een extra getal nodig heeft, waardoor de waarde naar links wordt verplaatst. Dus de waarde SN129YY00999 wordt omgezet naar SN129YY01000.

$VAR1={00;43}
// Assign the code area containing the serial number to a variable
$VAR2={44;0F}
$VAR3={54;2B}
INCREMENT $VAR2
IMPORTHEX=$VAR1$VAR2$VAR3


ERASEVENDORCODE

Vul het leverancier-specifieke gebied in de redactie met zeros.


COUNTER

Script iteratie counter.

Plaats deze opdracht aan het begin van een scriptbestand dat in een loop loopt. De huidige iteratie count is beschikbaar via de $COUNTER variabele.

// Invoke the iteration counter
COUNTER
// Assign the current counter value to a variable
$VAR0=$COUNTER
// Display the counter value
ECHO $COUNTER


IF A ... B THEN ...

Vergelijk de waarden. Gebruik deze constructe om A en B te vergelijken en uitvoeren de opdracht volgt THEN als de aangegeven voorwaarde waar is.

// Assign numeric values to variables
$VAR1=10
$VAR2=20
// Display a message box if the condition is true.
IF $VAR1 < $VAR2 THEN MSGBOX HELLO WORLD!


LOOP

Herhaal het script. Plaats deze bevel aan het einde van de scriptbestand om de applicatie te vertellen om de procedure opnieuw te starten. De commando UNLOOP annuleert LOOP. Gebruik een voorwaarde om de loop te verlaten en eindeloze herhalingen te vermijden.

Een voorbeeld met een voorwaarde.

COUNTER
...
R1A000007F
...
// Repeat the script until 10 iterations have completed
IF $COUNTER < 10 THEN LOOP

Als een script een oneindige loop invoert, stopt het met het gebruik van de wereldwijde onderbrekingsbevel in <Tools - Interrupt processes>.


STRTOHEX

Converteer de tekst na de operator naar een HEX-lijn.

$VAR9=STRTOHEX QSFP28-SR4 
MSGBOX $VAR9


HEXTOSTR

Converteer de HEX-lijn na de operator naar tekst.

$VAR9=HEXTOSTR 5153465032382D535234202020202020
MSGBOX $VAR9


PADRIGHTHEX

Plaats de hexadecimalwaarde in $VAR1 aan de rechterkant met het teken wiens code YY is totdat de lengte van zijn tekstvertegenwoordiging XX bereikt.

Commandformaat voor:

PADRIGHTHEX XX YY $VAR1

  • XX een decimale getal dat de lengte van de tekstvertegenwoordiging van de HEX-lijn specificert;
  • YY de HEX-code van het teken dat wordt gebruikt om de string naar de vereiste lengte te passen;
  • $VAR1 de variabele die de HEX-lijn bevat om te converteren.
// Convert text to a HEX string and store it in a variable
$VAR9=STRTOHEX QSFP28-SR4 
// Pad the variable on the right with spaces (HEX code 0x20) to 16 bytes 
$VAR8=PADRIGHTHEX 16 20 $VAR9
ECHO $VAR8

Deze opdracht is nuttig bij het toewijzen van tekst aan een variabele en om te zetten in een HEX-lijn van een bepaalde lengte.


PADLEFTHEX

Het werkt net als PADRIGHTHEX. Voeg de hexadecimalwaarde in $VAR1 aan de linkerkant met het teken wiens code YY is totdat de lengte van zijn tekstvertegenwoordiging XX bereikt.


SAVECODEDIR

Stel de route voor het opslaan van een code bestand automatisch zonder een dialoogvenster.

Voorbeeld: het instellen van de code output route naar een directory genaamd na het serienummer in de code:

$VAR4=HEXTOSTR {44;0F}
SAVECODEDIR=C:\Users\DemoUser\Desktop\Codes\$VAR4


SAVEFILE

Speel de code op een bestand op de door SAVECODEDIR ingestelde route. De applicatie genereert de bestandnaam automatisch volgens het geselecteerde module-type en pagina.

$VAR4=HEXTOSTR {44;0F}
SAVECODEDIR=C:\Users\DemoUser\Desktop\Codes\$VAR4
SAVEFILE


SIGNATURE

De generator wordt uitgevoerd met vooraf bepaalde parameters.

Deze functie vereist een verlengde generatorlicentie in de applicatie, die niet is opgenomen in het standaard pakket.


Externe brandbeheerder

APIURL

Set de URL die wordt gebruikt om de externe API-beheerder te noemen.

APIURL=http://localhost/example/api.php

APICALL

Bel de externe API-operator. Dit is hetzelfde als het klikken op de API-knop in het belangrijkste applicatievenster.

POST aanvraagformaat voor oproepen naar APIURL

POST Fields: code=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&module_type=1&table=A0&offset=00
  • code code: een 256-character string (HEX, bovenkant);
  • module_type Module type (0 — GBIC), 1 — SFP, 2 — SFP-DD, 3 — XFP, 4 — QSFP, 5 — QSFP-DD, 6 — OSFP);
  • table tabeladres (HEX, bovenkant; bijvoorbeeld: A0; A2);
  • offset tabel offset (HEX, bovenkant; bijvoorbeeld: 00, 80).

De server moet een JSON-lijn retourneren:

{"status":1,"script":"R1A000007F\r\nW1A000007F{00;7F}\r\n","message":"","code":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","module_type":"1","table":"A0","offset":"00"}

De serverrespons moet de volgende parameters bevatten:

  • status Verwerkingsstatus: 1 — import en uitvoeren van het script; 0 - een bericht weergeven zonder code te importeren;
  • script scripttekst te uitvoeren na het importeren van code; laat het leeg als geen script is aangegeven;
  • message de teruggekeerde boodschap, die wordt weergegeven wanneer status = 0;
  • code teruggekeerde code: een 256-character string (HEX, bovenkant);
  • module_type Module type (0 — GBIC), 1 — SFP, 2 — SFP-DD, 3 — XFP, 4 — QSFP, 5 — QSFP-DD, 6 — OSFP);
  • table tabeladres (HEX, bovenkant; bijvoorbeeld: A0; A2);
  • offset tabel offset (HEX, bovenkant; bijvoorbeeld: 00, 80).


Arithmetische operaties

De scriptprocessor ondersteunt toevoeging, subtraktie, vermenigvuldiging en divisie door middel van MATH.

Commandformaat voor:

MATH Value1 %Operator Value2

Ondersteunde arithmetische operators:

  • + – het toevoegen van;
  • - - een subtract;
  • * - de vermenigvuldiging van
  • / de divisie;
COUNTER
$VAR0=MATH 10 - $COUNTER
ECHO $VAR0
// Repeat the script while the condition is true
IF $VAR0 > 0 THEN LOOP


Gebruikersbestanden

Commands voor het werken met een gebruikersbestand.

USERFILEPATH

Stel de gebruikersbestandpad op.

USERFILEPATH=C:\Users\User\Desktop\user-file.txt

GETUSERFILESTRING

Lees de aangegeven lijn uit het gebruikersbestand.

GETUSERFILESTRING 10

SAVETOUSERFILE

De gegevens opslaan in de gebruikersbestand.

Voorbeeld:

// Store the serial number in a variable
$VAR2={44;0F}
// Save the variable value to the user file
SAVETOUSERFILE HEXTOSTR $VAR2
// Add a line feed and carriage return
SAVETOUSERFILE HEXTOSTR 0D0A

$STRCOUNTUSERFILE

Deze waarde bevat het aantal lijnen in de gebruikersbestand.

// Find the inserted line's position by subtracting the script iteration count from the file's line count 
$VAR0=MATH $STRCOUNTUSERFILE - $COUNTER
ECHO $VAR0
// Read the most recently inserted line from the file
GETUSERFILESTRING $VAR0
bijgewerkt: