Viết bằng Script
Scripts là một cơ chế ứng dụng đặc biệt để gửi và xử lý các hướng dẫn theo dõi. Họ có thể thiết lập cài đặt bảng điều khiển, đọc và viết bộ nhớ của người chuyển tiếp, và thực hiện các hoạt động khác.
Sử dụng các kịch bản khi một người chuyển đổi yêu cầu một quy trình lập trình khác với tiêu chuẩn MSA và cần một chuỗi hướng dẫn đặc biệt để tiết kiệm thay đổi bộ nhớ thành công. Scripts cũng có thể tự động lập trình lặp lại của các khu vực bộ nhớ thông qua khác nhau với sự tham gia tối thiểu của nhà điều hành.
Làm thế nào để tôi sử dụng một kịch bản?
- Mở menu Kiểm soát - viết bằng một kịch bản - Chọn tệp kịch bản để xác định đường bộ tệp kịch bản;
- Hãy chắc chắn rằng biên tập viên chứa mã chính xác nếu kịch bản sử dụng dữ liệu biên tập trong quá trình thực hiện;
- Nhấp vào nút ghi nhớ chuyển tiếp để chạy script.
Khi chạy một kịch bản, ứng dụng bỏ qua các cài đặt vùng bộ nhớ hiện đã được chọn. Các khu vực đọc và viết phải được xác định trong các lệnh kịch bản.
Xin lưu ý rằng phần mềm không xác minh xem việc viết đã thành công sau khi một kịch bản kết thúc.
Làm thế nào tôi có thể làm rõ kịch bản được chọn?
Đi đến menu Control - Write using a script - Tạo lại kịch bản để xóa kịch bản đã chọn và trở lại văn bản tiêu chuẩn.
Làm thế nào để tôi tạo ra một kịch bản?
Script command syntax dựa trên giao thức lệnh SFPTotal.
Ví dụ:
// 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
Tạo một tệp văn bản và nhập một hướng dẫn mỗi dòng. Lưu tệp kịch bản để sử dụng thủ tục lập trình này trong ứng dụng.
thêm script commands
Các lệnh bổ sung sau đây được xử lý bởi ứng dụng.
PAUSE
Phản hồi kịch bản. Thời gian nghỉ mặc định là 100 ms.
Một thông số tùy chọn đặt thời gian nghỉ trong milliseconds.
PAUSE
Delay 100ms
PAUSE=2000
Delay 2000ms
SETCHECKSUM
Đặt lại thanh toán.
SETVAL
Cài đặt ô biên tập tại offset XX để đánh giá YY. Đánh giá các giá trị thông số trong định dạng HEX.
Parameter offset chấp nhận các giá trị từ 00 đến 7F.
SETVAL 7F 03
{00;7F}
Thay thế macro {XX;YY} được sử dụng bên trong các lệnh khác để nhập một phần mã từ biên tập viên. Trong quá trình thực hiện kịch bản, macro được tự động thay thế bằng dữ liệu biên tập hiện tại bắt đầu từ byte XX và mở rộng byte YY.
Lưu ý rằng một giá trị của YY parameter 00 trong HEX có nghĩa là byte 1 được thay thế, trong khi một giá trị của 7F trong HEX có nghĩa là byte 128 được thay thế. Thiết lập YY cho chiều dài phân đoạn trong byte minus một, được thể hiện trong hexadecimal.
Ví dụ: viết một phân khúc 128-byte đến trang A2h tại offset 80h.
w2A200807F{00;7F}
Ví dụ: viết một phân đoạn giới hạn 96-byte DDM đến trang A2h tại offset 00h, sau đó là đọc.
W2A200005F{00;5F}
Ví dụ: Tùy chọn một biến cho phân khúc mã 16-byte tại offset 0x44 chứa số hàng loạt.
$VAR2={44;0F}
$VAR1
Buffer thay đổi $VAR1. Sử dụng biến buffer để lưu trữ các phân đoạn mã từ biên tập viên và nhập nội dung của họ trong quá trình chạy kịch bản.
Ứng dụng này hỗ trợ biến đổi buffer 10, $VAR0–$VAR9.
$VAR1={00;43}
$VAR2={44;0F}
$VAR3={54;2B}
$VAR4=002AFE
$VAR5=4F
$YYYY
Nhập năm hiện tại vào lệnh.
$MM
Nhập tháng hiện tại vào lệnh.
$DD
Nhập ngày hiện tại vào lệnh.
BACKUPTOFILE
Bắt đầu một sao lưu cho loại module được chọn trong cài đặt ứng dụng. Ứng dụng đọc các trang có sẵn liên tục và lưu dữ liệu vào một tệp. Lệnh này tương đương với việc gọi chức năng từ menu ứng dụng.
BACKUPDIR
Cài đặt thư mục backup. Các thông số bổ sung có thể được sử dụng để tạo một thư mục với một tên cụ thể.
Ví dụ: tạo một thư mục sao lưu với ngày trong tên của nó.
$VAR5=SOMETEXT
BACKUPDIR=\$YYYY-$MM-$DD_$VAR5\
BACKUPTOFILE
IMPORTFILE
nhập mã HEX từ một tệp nhị phân vào biên tập viên.
IMPORTFILE=\catalog\filename.bin
IMPORTHEX
nhập mã HEX vào biên tập viên.
Ví dụ: nhập một phân khúc mã 128-byte vào biên tập viên.
IMPORTHEX=030407100000000000000006670000000802001E4F454D2020202020202020202020202000000B4053465031302D535220202020202020204120202003520091001A000058473936535230313020202020202020303830393236202068F0031200001111A8DD05AA642FAA6F5A64DAF3285A9D000000000000000000F05E482F
nhập mã vào biên tập viên bằng cách kết hợp các biến buffer.
$VAR1={00;43}
$VAR2={44;0F}
$VAR3={54;2B}
IMPORTHEX=$VAR1$VAR2$VAR3
INCREMENT
Tăng giá trị của một biến có chứa một đại diện hexadecimal của mã để số ở cuối đại diện văn bản của nó tăng thêm một.
Ví dụ, biểu mẫu văn bản của biến SN129YY00201 được chuyển đổi thành SN129YY00202.
Nếu zeros đi trước phần số, ứng dụng cố gắng để giữ chiều dài dây ban đầu khi số tăng cần một con số bổ sung, chuyển giá trị sang trái. Do đó, giá trị SN129YY00999 được chuyển đổi thành 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
Chấp đầy khu vực cụ thể cho nhà cung cấp trong biên tập bằng zeros.
COUNTER
Bộ đếm số lần lặp của tập lệnh.
Đặt lệnh này ở đầu của một tệp kịch bản chạy trong một vòng tròn. Tính số iteration hiện tại có sẵn thông qua biến $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 ...
So sánh giá trị Sử dụng cấu trúc này để so sánh A và B và thực hiện lệnh theo THEN nếu điều kiện được chỉ định là đúng.
// 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
Lặp lại script. Đặt lệnh này ở cuối tệp kịch bản để nói cho ứng dụng chạy thủ tục một lần nữa. Lệnh UNLOOP xóa LOOP. Sử dụng một điều kiện để rời khỏi vòng tròn và tránh lặp lại vô tận.
Ví dụ với một điều kiện.
COUNTER
...
R1A000007F
...
// Repeat the script until 10 iterations have completed
IF $COUNTER < 10 THEN LOOP
Nếu một kịch bản nhập một vòng tròn vô tận, hãy dừng nó bằng cách sử dụng lệnh ngừng toàn cầu trong <Tools - Interrupt processes>.
STRTOHEX
Chuyển đổi văn bản theo nhà điều hành sang một dòng HEX.
$VAR9=STRTOHEX QSFP28-SR4
MSGBOX $VAR9
HEXTOSTR
Chuyển đổi dòng HEX theo nhà điều hành sang văn bản.
$VAR9=HEXTOSTR 5153465032382D535234202020202020
MSGBOX $VAR9
PADRIGHTHEX
Nhập giá trị hexadecimal trong $VAR1 ở bên phải với ký tự có mã là YY cho đến khi chiều dài biểu tượng văn bản của nó đạt XX.
Định dạng Command:
PADRIGHTHEX XX YY $VAR1
XXmột con số mười bằng cách chỉ định chiều dài của biểu hiện văn bản của dòng HEX;YYMã HEX của ký tự được sử dụng để dán dây đến chiều dài cần thiết;$VAR1biến có chứa dòng HEX để chuyển đổi.
// 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
Lệnh này hữu ích khi phân bổ văn bản cho một biến và chuyển đổi nó thành một dòng HEX có chiều dài cụ thể.
PADLEFTHEX
Làm việc như PADRIGHTHEX. Nhập giá trị hexadecimal trong $VAR1 ở bên trái với nhân vật có mã là YY cho đến khi chiều dài biểu tượng văn bản của nó đạt đến XX.
SAVECODEDIR
Thiết lập con đường để lưu tệp mã tự động mà không có hộp thoại.
Ví dụ: thiết lập con đường xuất mã cho một thư mục được đặt tên sau số hàng loạt trong mã:
$VAR4=HEXTOSTR {44;0F}
SAVECODEDIR=C:\Users\DemoUser\Desktop\Codes\$VAR4
SAVEFILE
Lưu mã cho một tệp trên con đường được thiết lập bởi SAVECODEDIR. Ứng dụng tạo tên tệp tự động theo loại module và trang được chọn.
$VAR4=HEXTOSTR {44;0F}
SAVECODEDIR=C:\Users\DemoUser\Desktop\Codes\$VAR4
SAVEFILE
SIGNATURE
Chạy máy phát với các thông số đặt trước.
Tính năng này đòi hỏi một giấy phép máy phát mở rộng trong ứng dụng, không bao gồm trong gói tiêu chuẩn.
Cửa lửa bên ngoài
APIURL
Thiết lập URL được sử dụng để gọi cho người xử lý API bên ngoài.
APIURL=http://localhost/example/api.php
APICALL
Hãy gọi cho người xử lý API bên ngoài. Điều này tương đương với việc nhấp vào nút API trong cửa sổ ứng dụng chính.
Bảng yêu cầu gửi cho APIURL
POST Fields: code=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&module_type=1&table=A0&offset=00
codeMã: một dòng nhân vật 256 (HEX, phía trên);module_typeLoại module (0 — GBIC), 1 — SFP, 2 — SFP-DD, 3 — XFP, 4 — QSFP, 5 — QSFP-DD, 6 — OSFP);tableĐịa chỉ bảng (HEX, phía trên; ví dụ: A0, A2);offsetbảng offset (HEX, trên; ví dụ: 00, 80).
Máy chủ phải trả về một dòng JSON:
{"status":1,"script":"R1A000007F\r\nW1A000007F{00;7F}\r\n","message":"","code":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","module_type":"1","table":"A0","offset":"00"}
Trả lời máy chủ phải chứa các thông số sau:
statustrạng thái xử lý: 1 — nhập và chạy kịch bản; 0 – hiển thị một thông điệp mà không cần nhập mã;scriptvăn bản kịch bản để thực hiện sau khi nhập mã; để trống nếu không có kịch bản được chỉ định;messageThông điệp được trả lại, hiển thị khi trạng thái = 0;codeMã trả về: một dòng nhân vật 256 (HEX, phía trên);module_typeLoại module (0 — GBIC), 1 — SFP, 2 — SFP-DD, 3 — XFP, 4 — QSFP, 5 — QSFP-DD, 6 — OSFP);tableĐịa chỉ bảng (HEX, phía trên; ví dụ: A0, A2);offsetbảng offset (HEX, trên; ví dụ: 00, 80).
hoạt động arithmetic
Bộ xử lý kịch bản hỗ trợ việc thêm, giảm, tăng và chia thông qua MATH.
Định dạng Command:
MATH Value1 %Operator Value2
Các nhà điều hành arithmetic hỗ trợ:
+- Thêm thêm;-- Thâm hụt;*- Sự đa dạng;/- Phân chia;
COUNTER
$VAR0=MATH 10 - $COUNTER
ECHO $VAR0
// Repeat the script while the condition is true
IF $VAR0 > 0 THEN LOOP
file user
Lệnh để làm việc với một tệp người dùng.
USERFILEPATH
Cài đặt con đường file user.
USERFILEPATH=C:\Users\User\Desktop\user-file.txt
GETUSERFILESTRING
Đọc dòng cụ thể từ tệp người dùng.
GETUSERFILESTRING 10
SAVETOUSERFILE
Lưu dữ liệu vào tệp người dùng.
Ví dụ:
// 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
Giá trị này chứa số dòng trong tệp người dùng.
// 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