Model_3116A.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. # -*- coding: UTF-8 -*-
  2. import io,sys,time
  3. reload(sys)
  4. sys.setdefaultencoding('utf-8')
  5. sys.path.append("..")
  6. import binascii
  7. import serial
  8. from ssat_sdk.baseSerial import baseSerial
  9. from ssat_sdk import sat_environment
  10. from ssat_sdk.device_manage.Model_3116A_CmdParse import C3316A_CmdParse
  11. from ssat_sdk.utils.AbnormalClient import abnormal_client
  12. class C3316A(baseSerial):
  13. def __init__(self, port):
  14. self.port = port
  15. baseSerial.__init__(self)
  16. def Open(self):
  17. return self.open(self.port, baudrate=19200, bytesize=8, parity=serial.PARITY_NONE, stopbits=1, timeout=2, writeTimeout=0.5)
  18. def __del__(self):
  19. self.close()
  20. # 用于发命令前,检测串口是否打开;
  21. def checkport(self):
  22. if not self.ser.is_open:
  23. self.reOpen()
  24. return self.ser.is_open
  25. '''
  26. 描述:发送命令;
  27. 返回:True表示命令成功执行;
  28. '''
  29. def sendCmd(self, command, data, ctrl = True):
  30. cmd = C3316A_CmdParse()
  31. package = cmd.parseCommand(command, data, ctrl)
  32. if self.write(package):
  33. package = self.read()
  34. if ctrl == True:
  35. return cmd.parseResult(package)
  36. else:
  37. ret = cmd.parseResult(package)
  38. # 获取设置信息;
  39. print 'read_info=',cmd.Result
  40. return ret
  41. if self.exception is not None:
  42. abnormal_client.sendAbnormal('ATV', str(self.exception))
  43. return False
  44. def sendCmdline(self, cmdline):
  45. cmd = C3316A_CmdParse()
  46. package = cmd.parseCmdLine(cmdline)
  47. if package is None:
  48. return False
  49. if self.write(package):
  50. package = self.read()
  51. if cmd.CmdType == '=':
  52. return cmd.parseResult(package)
  53. else:
  54. ret = cmd.parseResult(package)
  55. # 获取设置信息;
  56. print 'read_info=',cmd.Result
  57. return ret
  58. if self.exception is not None:
  59. abnormal_client.sendAbnormal('ATV', str(self.exception))
  60. return False
  61. def sendCmds(self, cmdlines):
  62. comma = cmdlines.find(',')
  63. if comma == -1:
  64. return self.sendCmdline(cmdlines)
  65. else:
  66. result = True
  67. while comma != -1:
  68. cmd = cmdlines[:comma]
  69. if self.sendCmdline(cmd) == False:
  70. result = False
  71. cmdlines = cmdlines[comma+1:]
  72. comma = cmdlines.find(',')
  73. # 最后一条命令;
  74. if self.sendCmdline(cmdlines) == False:
  75. result = False
  76. return result
  77. if __name__ == "__main__":
  78. scbc = C3316A(5)
  79. if scbc.Open() == False:
  80. print 'open false'
  81. if scbc.checkport() == True:
  82. if 0:
  83. scbc.sendCmd("SYSTV", '6')
  84. scbc.sendCmd('SYSFR', '49.75')
  85. scbc.sendCmd('SYSLV', '-10.00')
  86. if 0:
  87. # 设置频率:对应TG39中的RFFREQ命令:'RFFREQ 600.00'
  88. scbc.sendCmd('SYSFR', '600.00')#6个字符:***.**
  89. # 设置系统:对应TG39中的VCOL命令和RSYS命令 ???;
  90. SYSTV = {
  91. "NTSC M": '0', #TV Standard
  92. "NTSC4.43 B/G": '1',
  93. "NNTSC4.43 D/K":'2',
  94. "NTSC4.43 I": '3',
  95. "PAL B/G": '4',
  96. "PAL I": '5',
  97. "PAL D": '6',
  98. "PAL-N": '7',
  99. "PAL-M": '8',
  100. "PAL D(CHINA)": '9',
  101. "PAL B(AUS)": '10',
  102. "SECAM B/G": '11',
  103. "SECAM D/K/K1": '12',
  104. "SECAM L": '13',
  105. }
  106. if 0:
  107. for item in SYSTV:
  108. print 'cmd=',item
  109. scbc.sendCmd("SYSTV", SYSTV[item])
  110. time.sleep(0.9)
  111. if 0:
  112. # 设置信号强度:对应TG39中的RFLEV ???
  113. scbc.sendCmd('SYSLV','90.0', False)#5个字符:***.*
  114. scbc.sendCmd('SYSLV','-80.0')#5个字符:***.*
  115. if 0:
  116. # 先设置到DSVPS Programmable1~4.
  117. scbc.sendCmd('DSVPS','1')#1-4
  118. # 设置国家id:对应TG39中的RFCHA; ???
  119. scbc.sendCmd('DSVCT','000')#3个字符:***
  120. # 设置频道id:对应TG39中的RFCHB ???
  121. scbc.sendCmd('DSVPT','000')#3个字符:***
  122. # 先设置DSPDC Programmable1~4.
  123. scbc.sendCmd('DSPDC','1')#1-4
  124. # 设置国家id:对应TG39中的RFCHA; ???
  125. scbc.sendCmd('DSPCT','000')
  126. # 设置频道id:对应TG39中的RFCHB ???
  127. scbc.sendCmd('DSPPT','000')
  128. if 0:
  129. # 设置彩条:0000~003
  130. scbc.sendCmd('VDOVP','0000')#4字符0000~003
  131. # 设置白场;
  132. scbc.sendCmd('VDOVP','0500')#0500~0504
  133. # 设置黑场???
  134. # 设置方格信号开关???
  135. # 重显率关闭、开启???
  136. # 复合信号????
  137. if 0:
  138. # 不能在closed caption
  139. scbc.sendCmd("SYSTV", '5')
  140. # teletext off;
  141. scbc.sendCmd('DSSYS','00')
  142. # teletext Bxx:01-08
  143. scbc.sendCmd('DSSYS','01')
  144. # teletext Auto;
  145. scbc.sendCmd('DSSYS', '09')
  146. if 1:
  147. # closed caption,要在NTSC M状态下才能关闭;
  148. scbc.sendCmd("SYSTV", '0')
  149. scbc.sendCmd('DSSYS', '10')
  150. # CC Number1-Number9:00-08
  151. scbc.sendCmd('DSCCS','1')
  152. del scbc