melompat ke artikel

Menulis dengan skrip

Skrip adalah mekanisme aplikasi khas untuk menghantar dan memproses arahan secara berurutan. Mereka boleh mengkonfigurasi tetapan papan pemrograman transceiver, membaca dan menulis memori transceiver dan menjalankan operasi lain.

Gunakan skrip apabila penerima memerlukan prosedur pemrograman yang berbeza daripada standard MSA dan memerlukan satu siri arahan khas untuk menyimpan perubahan memori dengan berjaya. Skrip juga boleh mengautomatikkan pemrograman berulang kawasan memori transceptor yang berbeza dengan penglibatan operator minimum.


Bagaimanakah saya boleh menggunakan skrip?

  1. Membuka menu Kawalan - Menulis menggunakan skrip - Pilih fail skrip untuk menentukan laluan fail skrip;
  2. Pastikan editor mengandungi kod yang betul jika skrip menggunakan data editor semasa pelaksanaan;
  3. Klik butang memori penyerang untuk menjalankan skrip.

Apabila menjalankan skrip, aplikasi mengabaikan tetapan kawasan memori yang dipilih pada masa ini. Kawasan bacaan dan penulisan mesti dinyatakan dalam perintah skrip.

Sila ambil perhatian bahawa perisian tidak mengesahkan sama ada penulisan berjaya selepas skrip selesai.


Bagaimanakah saya boleh menyalakan skrip yang dipilih?

Pergi ke menu Mengawal - Menulis menggunakan skrip - Reset script untuk memadamkan skrip yang dipilih dan kembali kepada penulisan standard.


Bagaimanakah saya boleh membuat skrip?

Syntax perintah skrip adalah berdasarkan protokol perintah SFPTotal.

Contoh yang:

// 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

Mencipta fail teks dan masukkan satu arahan per baris. Simpan fail skrip untuk menggunakan prosedur pemrograman ini dalam aplikasi.


Perintah Skrip Tambahan

Perintah tambahan berikut diproses oleh permohonan.

PAUSE

Perhentian pelaksanaan skrip. Perhentian lalai ialah 100 ms.

Parameter opsional menetapkan tempoh rehat dalam milliseconds.

PAUSE
Delay 100ms
PAUSE=2000
Delay 2000ms


SETCHECKSUM

Mengira semula jumlah cek.


SETVAL

Setkan sel editor pada offset XX untuk nilai YY. Menentukan nilai parameter dalam format HEX atas.

Parameter offset menerima nilai dari 00 kepada 7F.

SETVAL 7F 03


{00;7F}

Penggantian makro {XX;YY} digunakan dalam perintah lain untuk memasukkan segmen kod daripada editor. Semasa pelaksanaan skrip, makro secara automatik digantikan dengan data editor semasa bermula pada byte XX dan meliputi byte YY.

Perhatikan bahawa nilai parameter YY 00 dalam HEX bermakna bahawa byte 1 digantikan, manakala nilai 7F dalam HEX bermakna bahawa byte 128 digantikan. Set YY kepada panjang segmen dalam byte minus satu, dinyatakan dalam hexadecimal.

Contoh: menulis segmen 128-byte ke halaman A2h pada offset 80h.

w2A200807F{00;7F}

Contoh: menulis segmen sempadan 96-byte DDM ke halaman A2h pada offset 00h, diikuti dengan bacaan.

W2A200005F{00;5F}

Contoh: menugaskan variabel kepada segmen kod byte 16 pada offset 0x44 yang mengandungi nombor siri.

$VAR2={44;0F}


$VAR1

Buffer variabel $VAR1. Gunakan variabel buffer untuk menyimpan segmen kod daripada editor dan memasukkan kandungan mereka semasa pelaksanaan skrip.

Aplikasi ini menyokong variabel buffer 10, $VAR0–$VAR9.

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


$YYYY

Masukkan tahun ini ke dalam perintah.


$MM

Masukkan bulan semasa ke dalam perintah.


$DD

Masukkan hari semasa ke dalam perintah.


BACKUPTOFILE

Mulakan sandaran untuk jenis modul yang dipilih dalam tetapan aplikasi. Aplikasi membaca halaman yang tersedia secara berurutan dan menyimpan data ke dalam fail. Perintah ini sama dengan mengingatkan fungsi daripada menu aplikasi.


BACKUPDIR

Menetapkan direktori sandaran. Parameter tambahan boleh digunakan untuk mencipta direktori dengan nama tertentu.

Contoh: Mencipta direktori sandaran dengan tarikh dalam namanya.

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


IMPORTFILE

Import kod HEX daripada fail binari ke dalam editor.

IMPORTFILE=\catalog\filename.bin


IMPORTHEX

Mengimport kod HEX ke dalam editor.

Contoh: mengimport segmen kod 128-bait ke dalam editor.

IMPORTHEX=030407100000000000000006670000000802001E4F454D2020202020202020202020202000000B4053465031302D535220202020202020204120202003520091001A000058473936535230313020202020202020303830393236202068F0031200001111A8DD05AA642FAA6F5A64DAF3285A9D000000000000000000F05E482F

Mengimport kod ke dalam editor dengan menyimpulkan variabel buffer.

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


INCREMENT

Meningkatkan nilai variabel yang mengandungi perwakilan hexadecimal kod supaya nombor di hujung perwakilan teksnya meningkat satu.

Contohnya, perwakilan teks variabel SN129YY00201 telah ditukar kepada SN129YY00202.

Sekiranya nol melebihi bahagian nombor, aplikasi cuba untuk mengekalkan panjang string asal apabila nombor yang ditingkatkan memerlukan digit tambahan, menukar nilai ke kiri. Oleh itu, nilai SN129YY00999 telah ditukar kepada 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

Lengkapkan kawasan spesifik vendor dalam editor dengan nol.


COUNTER

Script iterasi counter.

Letakkan perintah ini pada permulaan fail skrip yang berjalan dalam loop. Jumlah iterasi semasa boleh didapati melalui variabel $COUNTER.

// 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 ...

membandingkan nilai Gunakan konstrukt ini untuk membandingkan A dan B dan menjalankan perintah berikut THEN jika keadaan yang dinyatakan adalah benar.

// 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

Kembali lagi skrip ini. Letakkan perintah ini di hujung fail skrip untuk memberitahu aplikasi untuk menjalankan prosedur lagi. Perintah UNLOOP membatalkan LOOP. Gunakan keadaan untuk keluar dari lubang dan mengelakkan pengulangan yang tidak berkesudahan.

Contoh dengan syarat.

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

Jika skrip memasukkan lubang yang tidak berkesudahan, hentikan ia menggunakan perintah terganggu global dalam <Tools - Processes Interrupt>.


STRTOHEX

Menukar teks mengikut operator kepada string HEX.

$VAR9=STRTOHEX QSFP28-SR4 
MSGBOX $VAR9


HEXTOSTR

Menukar string HEX mengikut operator kepada teks.

$VAR9=HEXTOSTR 5153465032382D535234202020202020
MSGBOX $VAR9


PADRIGHTHEX

Letakkan nilai hexadecimal dalam $VAR1 di sebelah kanan dengan aksara yang kodnya YY sehingga panjang perwakilan teks mencapai XX.

Format Perintah:

PADRIGHTHEX XX YY $VAR1

  • XX nombor dekimal yang menentukan panjang perwakilan teks string HEX;
  • YY kod HEX watak yang digunakan untuk melampirkan tali ke panjang yang diperlukan;
  • $VAR1 variabel yang mengandungi HEX string untuk ditukar.
// 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

Perintah ini berguna apabila menugaskan teks kepada variabel dan menukarnya kepada string HEX panjang tertentu.


PADLEFTHEX

Ia berfungsi seperti PADRIGHTHEX. Masukkan nilai hexadecimal dalam $VAR1 di sebelah kiri dengan aksara yang kodnya YY sehingga panjang perwakilan teks mencapai XX.


SAVECODEDIR

Tetapkan laluan untuk menyimpan fail kod secara automatik tanpa kotak dialog.

Contoh: menetapkan laluan output kod ke direktori yang dinamakan selepas nombor siri dalam kod:

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


SAVEFILE

Simpan kod untuk fail pada laluan yang ditetapkan oleh SAVECODEDIR. Aplikasi ini secara automatik mencipta nama fail mengikut jenis modul dan halaman yang dipilih.

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


SIGNATURE

Berjalankan generator dengan parameter preset.

Ciri ini memerlukan lesen generator yang diperpanjang dalam aplikasi, yang tidak termasuk dalam pakej standard.


Pengendali api luar

APIURL

Tetapkan URL yang digunakan untuk memanggil operator API luaran.

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

APICALL

Panggil operator API luaran. Ini sama dengan mengklik butang API dalam tetingkap aplikasi utama.

Format permintaan POST untuk panggilan kepada APIURL

POST Fields: code=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&module_type=1&table=A0&offset=00
  • code Kod: 256-karakter string (HEX, bahagian atas);
  • module_type Jenis modul (0 — GBIC), 1 — SFP, 2 — SFP-DD, 3 — XFP, 4 — QSFP, 5 — QSFP-DD, 6 — OSFP);
  • table alamat jadual (HEX, bahagian atas; contohnya: A0; A2);
  • offset Jadual offset (HEX, atas; contohnya: 00, 80).

Pelayan perlu mengembalikan string JSON:

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

Jawapan pelayan mesti mengandungi parameter berikut:

  • status status pemprosesan: 1 — mengimport dan menjalankan skrip; 0—menunjukkan mesej tanpa mengimport kod;
  • script teks skrip untuk dijalankan selepas mengimport kod; meninggalkan kosong jika tiada skrip ditentukan;
  • message mengembalikan mesej yang dipaparkan apabila status = 0;
  • code kod yang dikembalikan: string watak 256 (HEX, bahagian atas);
  • module_type Jenis modul (0 — GBIC), 1 — SFP, 2 — SFP-DD, 3 — XFP, 4 — QSFP, 5 — QSFP-DD, 6 — OSFP);
  • table alamat jadual (HEX, bahagian atas; contohnya: A0; A2);
  • offset Jadual offset (HEX, atas; contohnya: 00, 80).


Operasi Aritmetik

Pemproses skrip menyokong penambahan, subtraksi, pengulangan dan pembahagian melalui MATH.

Format Perintah:

MATH Value1 %Operator Value2

Pengendali aritmetik yang disokong:

  • + · menambah
  • - • Subtraksi yang
  • * • pengambilan bilangan;
  • / Pembahagian:
COUNTER
$VAR0=MATH 10 - $COUNTER
ECHO $VAR0
// Repeat the script while the condition is true
IF $VAR0 > 0 THEN LOOP


fail pengguna

Perintah untuk bekerja dengan fail pengguna.

USERFILEPATH

Setkan laluan fail pengguna.

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

GETUSERFILESTRING

Baca baris yang dinyatakan daripada fail pengguna.

GETUSERFILESTRING 10

SAVETOUSERFILE

Menyimpan data ke dalam fail pengguna.

Contoh yang:

// 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

Nilai ini mengandungi bilangan baris dalam fail pengguna.

// 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
Kemas kini: