# -*- coding: UTF-8 -*- import io,sys,time reload(sys) sys.setdefaultencoding('utf-8') sys.path.append("..") import binascii import serial from ssat_sdk.baseSerial import baseSerial from ssat_sdk import sat_environment from ssat_sdk.device_manage.Model_3116A_CmdParse import C3316A_CmdParse from ssat_sdk.utils.AbnormalClient import abnormal_client class C3316A(baseSerial): def __init__(self, port): self.port = port baseSerial.__init__(self) def Open(self): return self.open(self.port, baudrate=19200, bytesize=8, parity=serial.PARITY_NONE, stopbits=1, timeout=2, writeTimeout=0.5) def __del__(self): self.close() # 用于发命令前,检测串口是否打开; def checkport(self): if not self.ser.is_open: self.reOpen() return self.ser.is_open ''' 描述:发送命令; 返回:True表示命令成功执行; ''' def sendCmd(self, command, data, ctrl = True): cmd = C3316A_CmdParse() package = cmd.parseCommand(command, data, ctrl) if self.write(package): package = self.read() if ctrl == True: return cmd.parseResult(package) else: ret = cmd.parseResult(package) # 获取设置信息; print 'read_info=',cmd.Result return ret if self.exception is not None: abnormal_client.sendAbnormal('ATV', str(self.exception)) return False def sendCmdline(self, cmdline): cmd = C3316A_CmdParse() package = cmd.parseCmdLine(cmdline) if package is None: return False if self.write(package): package = self.read() if cmd.CmdType == '=': return cmd.parseResult(package) else: ret = cmd.parseResult(package) # 获取设置信息; print 'read_info=',cmd.Result return ret if self.exception is not None: abnormal_client.sendAbnormal('ATV', str(self.exception)) return False def sendCmds(self, cmdlines): comma = cmdlines.find(',') if comma == -1: return self.sendCmdline(cmdlines) else: result = True while comma != -1: cmd = cmdlines[:comma] if self.sendCmdline(cmd) == False: result = False cmdlines = cmdlines[comma+1:] comma = cmdlines.find(',') # 最后一条命令; if self.sendCmdline(cmdlines) == False: result = False return result if __name__ == "__main__": scbc = C3316A(5) if scbc.Open() == False: print 'open false' if scbc.checkport() == True: if 0: scbc.sendCmd("SYSTV", '6') scbc.sendCmd('SYSFR', '49.75') scbc.sendCmd('SYSLV', '-10.00') if 0: # 设置频率:对应TG39中的RFFREQ命令:'RFFREQ 600.00' scbc.sendCmd('SYSFR', '600.00')#6个字符:***.** # 设置系统:对应TG39中的VCOL命令和RSYS命令 ???; SYSTV = { "NTSC M": '0', #TV Standard "NTSC4.43 B/G": '1', "NNTSC4.43 D/K":'2', "NTSC4.43 I": '3', "PAL B/G": '4', "PAL I": '5', "PAL D": '6', "PAL-N": '7', "PAL-M": '8', "PAL D(CHINA)": '9', "PAL B(AUS)": '10', "SECAM B/G": '11', "SECAM D/K/K1": '12', "SECAM L": '13', } if 0: for item in SYSTV: print 'cmd=',item scbc.sendCmd("SYSTV", SYSTV[item]) time.sleep(0.9) if 0: # 设置信号强度:对应TG39中的RFLEV ??? scbc.sendCmd('SYSLV','90.0', False)#5个字符:***.* scbc.sendCmd('SYSLV','-80.0')#5个字符:***.* if 0: # 先设置到DSVPS Programmable1~4. scbc.sendCmd('DSVPS','1')#1-4 # 设置国家id:对应TG39中的RFCHA; ??? scbc.sendCmd('DSVCT','000')#3个字符:*** # 设置频道id:对应TG39中的RFCHB ??? scbc.sendCmd('DSVPT','000')#3个字符:*** # 先设置DSPDC Programmable1~4. scbc.sendCmd('DSPDC','1')#1-4 # 设置国家id:对应TG39中的RFCHA; ??? scbc.sendCmd('DSPCT','000') # 设置频道id:对应TG39中的RFCHB ??? scbc.sendCmd('DSPPT','000') if 0: # 设置彩条:0000~003 scbc.sendCmd('VDOVP','0000')#4字符0000~003 # 设置白场; scbc.sendCmd('VDOVP','0500')#0500~0504 # 设置黑场??? # 设置方格信号开关??? # 重显率关闭、开启??? # 复合信号???? if 0: # 不能在closed caption scbc.sendCmd("SYSTV", '5') # teletext off; scbc.sendCmd('DSSYS','00') # teletext Bxx:01-08 scbc.sendCmd('DSSYS','01') # teletext Auto; scbc.sendCmd('DSSYS', '09') if 1: # closed caption,要在NTSC M状态下才能关闭; scbc.sendCmd("SYSTV", '0') scbc.sendCmd('DSSYS', '10') # CC Number1-Number9:00-08 scbc.sendCmd('DSCCS','1') del scbc