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?
- Open het menu Control - Schrijf met een script - Selecteer een scriptbestand om de scriptbestand pad te specificeren;
- Zorg ervoor dat de redacteur de juiste code bevat als het script tijdens de uitvoering editorgegevens gebruikt;
- 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
XXeen decimale getal dat de lengte van de tekstvertegenwoordiging van de HEX-lijn specificert;YYde HEX-code van het teken dat wordt gebruikt om de string naar de vereiste lengte te passen;$VAR1de 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
codecode: een 256-character string (HEX, bovenkant);module_typeModule type (0 — GBIC), 1 — SFP, 2 — SFP-DD, 3 — XFP, 4 — QSFP, 5 — QSFP-DD, 6 — OSFP);tabletabeladres (HEX, bovenkant; bijvoorbeeld: A0; A2);offsettabel 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:
statusVerwerkingsstatus: 1 — import en uitvoeren van het script; 0 - een bericht weergeven zonder code te importeren;scriptscripttekst te uitvoeren na het importeren van code; laat het leeg als geen script is aangegeven;messagede teruggekeerde boodschap, die wordt weergegeven wanneer status = 0;codeteruggekeerde code: een 256-character string (HEX, bovenkant);module_typeModule type (0 — GBIC), 1 — SFP, 2 — SFP-DD, 3 — XFP, 4 — QSFP, 5 — QSFP-DD, 6 — OSFP);tabletabeladres (HEX, bovenkant; bijvoorbeeld: A0; A2);offsettabel 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