Menulis dengan Skrip
Skrip adalah mekanisme aplikasi khusus untuk mengirim dan memproses instruksi secara seperinci. Mereka dapat mengkonfigurasi tetapan papan pemrograman transceiver, membaca dan menulis memori transceiver dan melakukan operasi lain.
Gunakan skrip ketika transceiver membutuhkan prosedur pemrograman yang berbeda dari standar MSA dan membutuhkan urutan instruksi khusus untuk menyimpan perubahan memori dengan sukses. Skrip juga dapat mengautomatikkan pemrograman berulang dari area memori transisi yang berbeda dengan keterlibatan operator minimal.
Bagaimana saya menggunakan skrip?
- Buka menu Kontrol - Menulis menggunakan script - Pilih file script untuk menentukan jalur file skrip;
- Pastikan editor memiliki kode yang benar jika skrip menggunakan data editor selama eksekusi;
- Klik tombol memori penulisan untuk menjalankan skrip.
Ketika menjalankan skrip, aplikasi mengabaikan pengaturan area memori yang saat ini dipilih. Bidang baca dan tulis harus ditentukan dalam perintah skrip.
Harap dicatat bahwa perangkat lunak tidak memverifikasi apakah penulisan berhasil setelah skrip selesai.
Bagaimana saya dapat menjelaskan skrip yang dipilih?
Pergi ke menu Mengontrol - Menulis menggunakan skrip - Reset script untuk menyingkirkan skrip yang dipilih dan kembali ke tulisan standar.
Bagaimana saya membuat skrip?
Script command syntax didasarkan pada protokol perintah SFPTotal.
Contohnya:
// 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
Buat file teks dan masukkan satu instruksi per baris. Simpan file skrip untuk menggunakan prosedur pemrograman ini dalam aplikasi.
Komando Skrip tambahan
Perintah tambahan berikut diproses oleh aplikasi.
PAUSE
Perhentian skrip eksekusi. Perhentian default adalah 100 ms.
Parameter pilihan menetapkan durasi istirahat dalam milisekund.
PAUSE
Delay 100ms
PAUSE=2000
Delay 2000ms
SETCHECKSUM
Menghitung kembali cek.
SETVAL
Tetapkan sel editor pada offset XX untuk nilai YY. Menentukan nilai parameter dalam format HEX atas.
Parameter offset menerima nilai dari 00 hingga 7F.
SETVAL 7F 03
{00;7F}
Penggantian makro {XX;YY} digunakan di dalam perintah lain untuk memasukkan segmen kode dari editor. Selama pelaksanaan skrip, makro secara otomatis digantikan dengan data editor saat ini mulai pada byte XX dan mencakup byte YY.
Perhatikan bahwa nilai parameter YY 00 dalam HEX berarti bahwa byte 1 digantikan, sementara nilai 7F Dalam HEX berarti bahwa byte 128 digantikan. Tetapkan YY pada panjang segmen dalam byte minus satu, diungkapkan dalam hexadecimal.
Contohnya: menulis segmen 128-byte ke halaman A2h pada offset 80h.
w2A200807F{00;7F}
Contoh: menulis segmen batas 96-byte DDM ke halaman A2h pada offset 00h, diikuti dengan bacaan.
W2A200005F{00;5F}
Contoh: menugaskan variabel pada segmen kode 16-byte pada offset 0x44 yang mengandung nomor serial.
$VAR2={44;0F}
$VAR1
Variabel buffer adalah $VAR1. Gunakan variabel buffer untuk menyimpan segmen kode dari editor dan memasukkan konten mereka selama pelaksanaan skrip.
Aplikasi ini mendukung variabel buffer 10, $VAR0–$VAR9.
$VAR1={00;43}
$VAR2={44;0F}
$VAR3={54;2B}
$VAR4=002AFE
$VAR5=4F
$YYYY
Masukkan tahun ini ke dalam komando.
$MM
Masukkan bulan ini ke dalam perintah.
$DD
Masukkan hari saat ini ke dalam perintah.
BACKUPTOFILE
Memulai backup untuk jenis modul yang dipilih dalam pengaturan aplikasi. Aplikasi membaca halaman yang tersedia secara berurutan dan menyimpan data ke file. Perintah ini sama dengan mengundang fungsi dari menu aplikasi.
BACKUPDIR
Menetapkan direktori backup. Parameter tambahan dapat digunakan untuk membuat direktori dengan nama tertentu.
Contoh: Mencipta direktori sandaran dengan tanggal dalam namanya.
$VAR5=SOMETEXT
BACKUPDIR=\$YYYY-$MM-$DD_$VAR5\
BACKUPTOFILE
IMPORTFILE
Mengimpor kode HEX dari file biner ke editor.
IMPORTFILE=\catalog\filename.bin
IMPORTHEX
Mengimpor kode HEX ke editor.
Contoh: mengimpor segmen kode 128-byte ke editor.
IMPORTHEX=030407100000000000000006670000000802001E4F454D2020202020202020202020202000000B4053465031302D535220202020202020204120202003520091001A000058473936535230313020202020202020303830393236202068F0031200001111A8DD05AA642FAA6F5A64DAF3285A9D000000000000000000F05E482F
Mengimpor kode ke editor dengan mengkoncentrasi variabel buffer.
$VAR1={00;43}
$VAR2={44;0F}
$VAR3={54;2B}
IMPORTHEX=$VAR1$VAR2$VAR3
INCREMENT
Meningkatkan nilai variabel yang mengandung representasi hexadecimal kode sehingga jumlah di akhir representasi teksnya meningkat satu.
Contohnya, representasi teks dari variabel SN129YY00201 telah diubah menjadi SN129YY00202.
Jika zeros melampaui porsi numerik, aplikasi mencoba untuk mempertahankan panjang string asli ketika angka yang ditingkatkan membutuhkan angka tambahan, menukar nilai ke kiri. Dengan demikian, nilai SN129YY00999 telah diubah menjadi 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
Mengisi area spesifik vendor di editor dengan nol.
COUNTER
Script iterasi counter.
Letakkan perintah ini pada permulaan file skrip yang berjalan dalam loop. Jumlah iterasi saat ini tersedia 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 konstruk ini untuk membandingkan A dan B dan lakukan perintah berikut THEN jika kondisi yang ditentukan 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
Ulangi skrip ini. Letakkan perintah ini di akhir file skrip untuk memberitahu aplikasi untuk menjalankan prosedur lagi. Perintah UNLOOP membatalkan LOOP. Gunakan kondisi untuk keluar dari lingkaran dan menghindari pengulangan tak berkesudahan.
Contoh dengan syarat.
COUNTER
...
R1A000007F
...
// Repeat the script until 10 iterations have completed
IF $COUNTER < 10 THEN LOOP
Jika sebuah skrip memasuki lubang yang tak terbatas, hentikan menggunakan perintah terputus global di <Tools - Interrupt Processes>.
STRTOHEX
Konversi teks yang mengikuti operator ke string HEX.
$VAR9=STRTOHEX QSFP28-SR4
MSGBOX $VAR9
HEXTOSTR
Konversi string HEX setelah operator ke teks.
$VAR9=HEXTOSTR 5153465032382D535234202020202020
MSGBOX $VAR9
PADRIGHTHEX
Letakkan nilai hexadecimal dalam $VAR1 di sebelah kanan dengan karakter yang kode YY sampai panjang representasi teks mencapai XX.
Format Perintah:
PADRIGHTHEX XX YY $VAR1
XXnomor dekimal yang menentukan panjang representasi teks string HEX;YYkode HEX dari karakter yang digunakan untuk menempelkan string ke panjang yang diperlukan;$VAR1variabel yang mengandung string HEX 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 ketika menugaskan teks kepada variabel dan mengubahnya menjadi string HEX panjang tertentu.
PADLEFTHEX
Seperti halnya PADRIGHTHEX. Masukkan nilai hexadecimal dalam $VAR1 di sebelah kiri dengan karakter yang kode YY sampai panjang representasi teks mencapai XX.
SAVECODEDIR
Tetapkan jalur untuk menyimpan file kode secara otomatis tanpa kotak dialog.
Contoh: menetapkan jalur output kode ke direktori yang dinamakan setelah nomor serial dalam kode:
$VAR4=HEXTOSTR {44;0F}
SAVECODEDIR=C:\Users\DemoUser\Desktop\Codes\$VAR4
SAVEFILE
Simpan kode ke file di jalur yang ditetapkan oleh SAVECODEDIR. Aplikasi menghasilkan nama file secara otomatis sesuai dengan jenis modul dan halaman yang dipilih.
$VAR4=HEXTOSTR {44;0F}
SAVECODEDIR=C:\Users\DemoUser\Desktop\Codes\$VAR4
SAVEFILE
SIGNATURE
Lakukan generator dengan parameter preset.
Fitur ini membutuhkan lisensi generator yang diperpanjang dalam aplikasi, yang tidak termasuk dalam paket standar.
Pembakar api eksternal
APIURL
Tetapkan URL yang digunakan untuk memanggil operator API eksternal.
APIURL=http://localhost/example/api.php
APICALL
Memanggil operator API eksternal. Ini sama dengan mengklik tombol API di jendela aplikasi utama.
Format permintaan untuk panggilan ke APIURL
POST Fields: code=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&module_type=1&table=A0&offset=00
codekode: string karakter 256 (HEX, atas);module_typeJenis modul (0 — GBIC), 1 — SFP, 2 — SFP-DD, 3 — XFP, 4 — QSFP, 5 — QSFP-DD, 6 — OSFP);tablealamat tabel (HEX, atas; misalnya: A0, A2);offsettabel offset (HEX, atas; misalnya: 00, 80).
Server harus mengembalikan string JSON:
{"status":1,"script":"R1A000007F\r\nW1A000007F{00;7F}\r\n","message":"","code":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","module_type":"1","table":"A0","offset":"00"}
Jawaban server harus berisi parameter berikut:
statusstatus pemrosesan: 1 — mengimport dan menjalankan skrip; 0—menampilkan pesan tanpa mengimport kode;scriptteks skrip untuk dijalankan setelah mengimport kode; tinggalkan kosong jika tidak ada skrip yang ditentukan;messagemengembalikan pesan yang ditampilkan ketika status = 0;codeKode yang dikembalikan: string karakter 256 (HEX, bagian atas);module_typeJenis modul (0 — GBIC), 1 — SFP, 2 — SFP-DD, 3 — XFP, 4 — QSFP, 5 — QSFP-DD, 6 — OSFP);tablealamat tabel (HEX, atas; misalnya: A0, A2);offsettabel offset (HEX, atas; misalnya: 00, 80).
Operasi Aritmetik
Prosesor skrip mendukung penambahan, subtraksi, multiplikasi dan pembagian melalui MATH.
Format Perintah:
MATH Value1 %Operator Value2
Operator aritmetik yang didukung:
+dan tambahan;-Subtraksi yang ada;*untuk multiplikasi;/dan divisi;
COUNTER
$VAR0=MATH 10 - $COUNTER
ECHO $VAR0
// Repeat the script while the condition is true
IF $VAR0 > 0 THEN LOOP
File Pengguna
Perintah untuk bekerja dengan file pengguna.
USERFILEPATH
Menetapkan jalur file pengguna.
USERFILEPATH=C:\Users\User\Desktop\user-file.txt
GETUSERFILESTRING
Baca baris yang ditentukan dari file pengguna.
GETUSERFILESTRING 10
SAVETOUSERFILE
Simpan data ke file pengguna.
Contohnya:
// 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 mencakup jumlah baris dalam file 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