1.1.0版本
This commit is contained in:
1
UniTAP/dev/modules/terminal/__init__.py
Normal file
1
UniTAP/dev/modules/terminal/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .dev_terminal import Terminal
|
||||
58
UniTAP/dev/modules/terminal/dev_terminal.py
Normal file
58
UniTAP/dev/modules/terminal/dev_terminal.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import time
|
||||
from UniTAP.libs.lib_tsi.tsi_io import DeviceIO
|
||||
from UniTAP.libs.lib_tsi.tsi import TSI_TERMINAL_RW
|
||||
from ctypes import c_char
|
||||
|
||||
|
||||
class Terminal:
|
||||
|
||||
def __init__(self, device_io: DeviceIO):
|
||||
self.__io = device_io
|
||||
|
||||
def write_vr(self, register: int, value: int):
|
||||
self.__execute(f"vw {hex(register)} {value}")
|
||||
|
||||
def read_vr(self, register: int) -> str:
|
||||
self.__execute(f"vr {hex(register)}")
|
||||
return self.__get_logs()
|
||||
|
||||
def write_fifo_vr(self, register: int, value: int):
|
||||
self.__execute(f"vfw {hex(register)} {value}")
|
||||
|
||||
def read_fifo_vr(self, register: int) -> str:
|
||||
self.__execute(f"vfr {hex(register)}")
|
||||
return self.__get_logs()
|
||||
|
||||
def run_command(self, command: str) -> str:
|
||||
self.__execute(command)
|
||||
return self.__get_logs()
|
||||
|
||||
def __execute(self, command):
|
||||
command += '\r'
|
||||
str_len = (len(command) / 4 + (1 if len(command) % 4 else 0)) * 4
|
||||
self.__io.set(config_id=TSI_TERMINAL_RW,
|
||||
data=command,
|
||||
data_type=c_char,
|
||||
data_count=len(command),
|
||||
data_size=int(str_len))
|
||||
|
||||
def __get_logs(self, timeout: int = 5) -> str:
|
||||
try:
|
||||
start = time.time()
|
||||
result = []
|
||||
while time.time() - start < timeout:
|
||||
result = self.__io.get(TSI_TERMINAL_RW, c_char, 1024)[1]
|
||||
if result[0] != b'\x00':
|
||||
break
|
||||
|
||||
output = ""
|
||||
for i in result:
|
||||
if i != b'\x00':
|
||||
output += i.decode()
|
||||
|
||||
if output == "":
|
||||
print("No output message")
|
||||
return output
|
||||
except BaseException:
|
||||
print("No output message")
|
||||
return ""
|
||||
Reference in New Issue
Block a user