Yazılar ile yazmak
Scriptler, talimatları sırasıyla göndermek ve işlemek için özel bir uygulama mekanizmasıdır. Transceiver programlama tablosu ayarlarını ayarlayabilir, transceiver hafızasını okuyabilir ve yazabilir ve diğer işlemleri yapabilirler.
Bir geçici, MSA standartlarından farklı bir programlama prosedürü gerektirdiğinde ve hafıza değişikliklerini başarıyla kaydetmek için özel talimatların bir dizi gerektirir. Scriptler ayrıca, operatörün en az katılımı ile farklı geçici hafıza alanlarının tekrarlanan programlanmasını otomatik olarak yapabilirler.
Bir senaryo nasıl kullanılır?
- Menü açın Kontrol - Bir senaryo kullanarak yazın - Bir senaryon dosyasını seçin Script dosya yolu belirlemek için;
- Editörün düzgün kodunu içerdiğinden emin olun, eğer senaryo çalıştırma sırasında editör verilerini kullanırsa;
- Script'i çalıştırmak için Transceiver Memory yazma düğmesine tıklayın.
Bir senaryo çalıştırırken, uygulama şu anda seçilen hafıza alanı ayarlarını görmezden gelir. Okuma ve yazma alanları, senaryo komutlarında belirtilmelidir.
Lütfen yazılımın bir senaryo bittikten sonra yazmanın başarılı olup olmadığını kontrol etmediğini unutmayın.
Seçilen senaryoyu nasıl açıklayabilirim?
Menüye gidin Kontrol - Bir senaryo kullanarak yazma - Reset script Seçilen senaryoyu silin ve standart yazıya geri dönün.
Bir senaryo nasıl oluşturulur?
Script komut syntax, SFPTotal komut protokolüne dayanmaktadır.
Örnek:
// 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
Bir metin dosyası oluşturun ve satır başına bir talimat girin. Bu programlama prosedürünü uygulamada kullanmak için senaryo dosyasını kaydedin.
Ek script komutları
Aşağıdaki ek komutlar başvuru tarafından işlenir.
PAUSE
Script performansını durdurmak. İndirimli durak 100 ms.
Seçmeli bir parametre, duraklama süresini millisekonda ayarlar.
PAUSE
Delay 100ms
PAUSE=2000
Delay 2000ms
SETCHECKSUM
Kontrolü yeniden hesaplayın.
SETVAL
Editör hücresini YY değerine offset XX'de ayarlayın. Yukarıdaki parametrelerin değerlerini HEX biçiminde belirtin.
Offset parametresi 00'dan 7F'ye kadar değerleri kabul eder.
SETVAL 7F 03
{00;7F}
Makro Değişimi {XX;YY} Diğer komutların içine, editörden bir kod segmentini girmek için kullanılır. Senaryo çalıştırma sırasında, makro otomatik olarak XX byte başlar ve YY byte uzatır.
YY parametrelerinin değerinin 00 HEX'da, 1 byte değiştirildiği anlamına gelir. 7F HEX'te 128 byte değiştirildiği anlamına gelir. YY'yi segment uzunluğuna, hexadecimal olarak ifade edilen byte minus birinde ayarlayın.
Örnek: 128-byte segmentini 80h'de A2h sayfasına yazın.
w2A200807F{00;7F}
Örnek: A2h sayfasında 00h ofsetine 96 baytlık bir DDM eşik segmenti yazılması ve ardından okuma yapılması.
W2A200005F{00;5F}
Örnek: seri numarasını içeren ve 0x44 ofsetinde bulunan 16 baytlık kod segmentinin bir değişkene atanması.
$VAR2={44;0F}
$VAR1
Buffer değişkenleri $VAR1 Buffer değişkenleri kullanarak editörün kod segmentlerini kaydetmek ve senaryo çalıştırma sırasında içeriğini girin.
Uygulama 10 buffer değişkenleri, $VAR0–$VAR9 destekler.
$VAR1={00;43}
$VAR2={44;0F}
$VAR3={54;2B}
$VAR4=002AFE
$VAR5=4F
$YYYY
Geçen yılın komutuna girin.
$MM
Geçerli ayı komutun içine girin.
$DD
Şu anki gününü komutun içine koyun.
BACKUPTOFILE
Uygulama ayarlarında seçilen modül türü için bir yedekleme başlatın. Uygulama mevcut sayfaları sırasıyla okuyor ve verileri bir dosyaya kaydeder. Bu komut, uygulama menüsünden fonksiyonu çağırmakla eşdeğerdir.
BACKUPDIR
Yedekleme dizinini oluşturun. Belirli bir isimle bir dizin oluşturmak için ek parametreler kullanılabilir.
Örnek: Adında tarihi olan bir yedekleme dizinini oluşturun.
$VAR5=SOMETEXT
BACKUPDIR=\$YYYY-$MM-$DD_$VAR5\
BACKUPTOFILE
IMPORTFILE
Bir biner dosyadan editörün içine HEX kodu ithal edin.
IMPORTFILE=\catalog\filename.bin
IMPORTHEX
HEX kodu editörün içine girin.
Örnek: 128 baytlık bir kod segmentinin düzenleyiciye aktarılması.
IMPORTHEX=030407100000000000000006670000000802001E4F454D2020202020202020202020202000000B4053465031302D535220202020202020204120202003520091001A000058473936535230313020202020202020303830393236202068F0031200001111A8DD05AA642FAA6F5A64DAF3285A9D000000000000000000F05E482F
Buffer değişkenleri birleştirerek editörün içine kod ithal etmek.
$VAR1={00;43}
$VAR2={44;0F}
$VAR3={54;2B}
IMPORTHEX=$VAR1$VAR2$VAR3
INCREMENT
Kodun hexadecimal temsilini içeren bir değişkenin değerini arttırın, böylece metin temsilinin sonunda sayısı bir artış gösterir.
Örneğin, değişkenin metin temsilciliği SN129YY00201 dönüştürülmüştür SN129YY00202.
Eğer sıfır sayısal kısmı öne çıkıyorsa, uygulama, artan sayının bir ek sayıya ihtiyacı olduğunda orijinal çizgi uzunluğunu korumaya çalışır ve değerini sol tarafa taşıyar. Böylece değer SN129YY00999 dönüştürülmüştür 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
Editörde sunucu özel alanı sıfırlarla doldurun.
COUNTER
Script iteration counter ile ilgili bilgiler.
Bu komutu bir yuva içinde çalışan bir senaryo dosyasının başlangıcında yerleştirin. Mevcut iterasyon sayısı, $COUNTER değişkeniyle mevcuttur.
// 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 ...
Değerleri karşılaştırın. A ve B'yi karşılaştırmak için bu konektörü kullanın ve belirtilen koşul doğru ise, bu komutu takip edin.
// 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
Senaryoyu tekrarlayın. Bu komutu senaryo dosyasının sonunda yerleştirin ve uygulamanın prosedürü yeniden çalıştırmasını söyleyin. UNLOOP komutu LOOP'u iptal eder. Bir koşulu kullanın, yuva dışarı çıkın ve sonsuz tekrarlamaları önleyin.
Örnek bir koşulla.
COUNTER
...
R1A000007F
...
// Repeat the script until 10 iterations have completed
IF $COUNTER < 10 THEN LOOP
Eğer bir senaryo sonsuz bir yuva girerse, <Tools - Interrupt Processes>'daki küresel durdurma komutunu kullanarak durdurun.
STRTOHEX
Operatörün ardından metni bir HEX çubuğuna dönüştürün.
$VAR9=STRTOHEX QSFP28-SR4
MSGBOX $VAR9
HEXTOSTR
Operatörün ardından HEX çubuğunu metin haline dönüştürün.
$VAR9=HEXTOSTR 5153465032382D535234202020202020
MSGBOX $VAR9
PADRIGHTHEX
Hexadecimal değerini $VAR1'ya doğru YY kodu olan karakterle yapıştırın, metin temsilinin uzunluğu XX'ye ulaşana kadar.
Komut Formatı:
PADRIGHTHEX XX YY $VAR1
XXHEX çubuğunun metin temsilciliğinin uzunluğunu belirleyen bir ondalık sayı;YYHEX karakterin kodu, çizgiyi gerekli uzunluğa yapıştırmak için kullanılan;$VAR1dönüştürülmesi gereken HEX çubuğunu içeren değişken.
// 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
Bu komut, bir değişken için metni atarken ve belirli bir uzunluğun HEX çubuğuna dönüştürürken yararlıdır.
PADLEFTHEX
PADRIGHTHEX gibi çalışıyor. Sağdaki hexadecimal değeri, kodunun YY olduğu karakterle $VAR1'da yapıştırın, metin temsilinin uzunluğu XX'ye ulaşana kadar.
SAVECODEDIR
Bir kod dosyasını bir diyalog kutusu olmadan otomatik olarak kaydetmek için yolu ayarlayın.
Örnek: kodu çıkış yolu kodun seri sayısının ardından adlandırılan bir dizine ayarlayın:
$VAR4=HEXTOSTR {44;0F}
SAVECODEDIR=C:\Users\DemoUser\Desktop\Codes\$VAR4
SAVEFILE
Bir dosyaya SAVECODEDIR tarafından belirlenen yoldan kodu kaydedin. Uygulama, seçilen modül türüne ve sayfasına göre dosya adını otomatik olarak oluşturur.
$VAR4=HEXTOSTR {44;0F}
SAVECODEDIR=C:\Users\DemoUser\Desktop\Codes\$VAR4
SAVEFILE
SIGNATURE
Generatörü önceden ayarlanmış parametrelerle çalıştırın.
Bu özellik, uygulamada, standart paket içine dahil edilmemiş olan genişletilmiş bir jeneratör lisansı gerektirir.
Dış ateş işçileri
APIURL
Dış API işlemcisi olarak adlandırmak için kullanılan URL'yi ayarlayın.
APIURL=http://localhost/example/api.php
APICALL
Dış API işlemcisi ile iletişime geçin Bu, ana uygulama penceresinde API düğmesine tıklayarak eşittir.
APIURL'e çağrı için POST isteği biçimi
POST Fields: code=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&module_type=1&table=A0&offset=00
codekod: bir 256 karakter çubuğu (HEX, üst kısmı);module_typeModül türü (0 — GBIC, 1 — SFP, 2 — SFP-DD, 3 — XFP, 4 — QSFP, 5 — QSFP-DD, 6 — OSFP);tableTablo adresi (HEX, üst; örneğin: A0; A2);offsetTablo offset (HEX, üst; örneğin: 00, 80).
Sunucu bir JSON çubuğunu iade etmelidir:
{"status":1,"script":"R1A000007F\r\nW1A000007F{00;7F}\r\n","message":"","code":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","module_type":"1","table":"A0","offset":"00"}
Sunucu cevabı aşağıdaki parametreleri içermelidir:
statusİşleme durumu: 1 - senaryo ithal etmek ve çalıştırmak; 0 — kod ithal etmeden bir mesaj göstermek;scriptkod ithal ettikten sonra yürütülen senaryo metni; senaryo belirtilmediğinde boş bırakın;messagegeri gönderilen mesaj, status=0 olduğunda görüntülenir;codegeri dönüş kodu: 256 karakter çubuğu (HEX, üst kısmı);module_typeModül türü (0 — GBIC, 1 — SFP, 2 — SFP-DD, 3 — XFP, 4 — QSFP, 5 — QSFP-DD, 6 — OSFP);tableTablo adresi (HEX, üst; örneğin: A0; A2);offsetTablo offset (HEX, üst; örneğin: 00, 80).
Aritmetik Operasyonlar
Script işlemcisi ekleme, altlayıcı, çoğaltma ve bölünme destekler. MATH.
Komut Formatı:
MATH Value1 %Operator Value2
Desteklenen aritmetik operatörler:
+• Ekleyin;-Substrasyon için;*• Çoğaltma;/Bölünme için;
COUNTER
$VAR0=MATH 10 - $COUNTER
ECHO $VAR0
// Repeat the script while the condition is true
IF $VAR0 > 0 THEN LOOP
Kullanıcı Dosyası
Kullanıcı dosyası ile çalışmak için komutlar.
USERFILEPATH
Kullanıcı dosya yolu ayarlayın.
USERFILEPATH=C:\Users\User\Desktop\user-file.txt
GETUSERFILESTRING
Kullanıcı dosyasından belirtilen satırı okuyun.
GETUSERFILESTRING 10
SAVETOUSERFILE
Kullanıcı dosyasına veri kaydetme.
Örnek:
// 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
Bu değer, kullanıcı dosyasında satır sayısını içerir.
// 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