tg39_manager.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. # -*- coding:utf-8 -*-
  2. import os, sys, time
  3. from device_manager import *
  4. from ssat_sdk.utils import LoggingUtil
  5. from ssat_sdk import sat_environment
  6. from ssat_sdk.utils import string_util
  7. TV_SYSTEM_DICT = {"MN":0,"BG":1,"DK":2,"I":3,"L":4,"L'":5}
  8. COLOR_SYSTEM_DICT = {"NTSC-STD":0,"NTSC-50":1,"NTSC-443":2,"PAL-STD":3,"PAL-60":4,"PAL-M":5,"PAL-N":6,"SECAM":7}
  9. SYSTV = {
  10. "NTSC M": '0', #TV Standard
  11. "NTSC4.43 B/G": '1',
  12. "NNTSC4.43 D/K":'2',
  13. "NTSC4.43 I": '3',
  14. "PAL B/G": '4',
  15. "PAL I": '5',
  16. "PAL D": '6',
  17. "PAL-N": '7',
  18. "PAL-M": '8',
  19. "PAL D(CHINA)": '9',
  20. "PAL B(AUS)": '10',
  21. "SECAM B/G": '11',
  22. "SECAM D/K/K1": '12',
  23. "SECAM L": '13',
  24. }
  25. class TG39Manager():
  26. # 当前选择的ATV码流仪;
  27. ATV_SELECTIVE = sat_environment.getATVSelected()
  28. def __init__(self):
  29. self.devManager = DeviceManager.getInstance()
  30. if string_util.strcmp(TG39Manager.ATV_SELECTIVE,'TG39'):
  31. LoggingUtil.printLog("初始化TG39设备")
  32. elif string_util.strcmp(TG39Manager.ATV_SELECTIVE,'54200'):
  33. LoggingUtil.printLog("初始化54200设备")
  34. elif string_util.strcmp(TG39Manager.ATV_SELECTIVE,'3116'):
  35. LoggingUtil.printLog("初始化3116设备")
  36. def setCTYandCHN(self, countryID, channelID):
  37. """
  38. RFCHA-arg1 For arg1, input the country name ID to set (as a decimal number).
  39. RFCHB-arg2 For arg2, input the channel ID to set (as a decimal number).
  40. countryID channelID
  41. 1 JAPAN 1 to 62
  42. 2 USA 2 to 83
  43. 3 EU 1 to 69
  44. 4 CHINA 1 to 68
  45. 5 UK 21 to 69
  46. 6 R 1 to 69
  47. 7 FRANCE 1 to 69
  48. 8 AUSTRALIA 1 to 69
  49. 9 JAPAN-C 1 to 63
  50. 10 USA-C 2 to 150
  51. 11 EU-C 2 to 56
  52. 12 CHINA-C 1 to 51
  53. 13 ITY 1 to 69
  54. 14 IRE 1 to 69
  55. """
  56. if string_util.strcmp(TG39Manager.ATV_SELECTIVE,'TG39'):
  57. self.setTG39CMD("RFCHA", countryID)
  58. self.setTG39CMD("RFCHB", channelID)
  59. elif string_util.strcmp(TG39Manager.ATV_SELECTIVE,'3116'):
  60. pass
  61. '''
  62. freq: float, value:MHz
  63. color_system:string,value:("NTSC-STD","NTSC-50","NTSC-443","PAL-STD","PAL-60","PAL-M","PAL-N","SECAM")
  64. tv_system:string,value:(MN,BG,DK,I,L,L')
  65. level:float, value:(29.0 to 109.0) (dBu V/75欧)
  66. '''
  67. def setChannel(self, freq, color_system, tv_system, level):
  68. if string_util.strcmp(TG39Manager.ATV_SELECTIVE,'TG39'):
  69. self.setTG39CMD("RFFREQ", freq) #freq: float MHz
  70. colorCode = COLOR_SYSTEM_DICT[color_system]
  71. self.setTG39CMD("VCOL", colorCode)
  72. systemCode = TV_SYSTEM_DICT[tv_system]
  73. self.setTG39CMD("RSYS", systemCode)
  74. self.setTG39CMD("RFLEV", level)
  75. elif string_util.strcmp(TG39Manager.ATV_SELECTIVE,'3116'):
  76. self.setTG39CMD("SYSFR", freq)
  77. self.setTG39CMD('SYSTV',SYSTV[color_system])
  78. # 信号强度要与TG39使用同范围
  79. # 3116:-80.00~0.00
  80. # TG39:29.0~109.00
  81. flevel = float(level)
  82. if flevel <= 29.00:
  83. level = '-80.0'
  84. elif flevel >= 109.00:
  85. level = '000.0'
  86. else:
  87. level = str(flevel - 109.0)
  88. self.setTG39CMD('SYSLV',level)
  89. '''
  90. command:string, value:RS-232C command
  91. param:no type, value:Content
  92. '''
  93. def setTG39CMD(self, command, param):
  94. if string_util.strcmp(TG39Manager.ATV_SELECTIVE,'TG39'):
  95. cmdLine = str(command) + " " + str(param)
  96. self.sendCmd(cmdLine)
  97. elif string_util.strcmp(TG39Manager.ATV_SELECTIVE,'3116'):
  98. cmdLine = str(command) + "=" + str(param) + '\r'
  99. self.sendCmd(cmdLine)
  100. def sendCmd(self, cmdLine):
  101. self.client = self.devManager.getDevService("tg39")
  102. self.client.send(cmdLine)
  103. print u"TG39指令执行结果:", self.client.recv()
  104. self.client.close()