python串口控制8通道继电器方法笔记 保存当前文件RelayControl.py,在其他py引用文件时使用from RelayControl import relay 格式导入 调用时,使用 relay.connect() 即 relay.ALL_ON() 等即可。
# coding:utf-8 import serial import time from logset import logger ''' 8路继电器开关控制函数包括打开连接串口、单独继电器开关控制和所有开关控制。 author:yutao ''' class relay(object): def __init__(self): self.chl_ON_code = ['00 f1 ff', '00 f2 ff', '00 f3 ff', '00 f4 ff', '00 f5 ff', '00 f6 ff', '00 f7 ff', '00 f8 ff', '00 f9 ff'] self.chl_OFF_code = ['00 01 ff', '00 02 ff', '00 03 ff', '00 04 ff', '00 05 ff', '00 06 ff', '00 07 ff', '00 08 ff', '00 09 ff'] self.ACC_chl = 1 self.BAT_chl = 2 self.GND_chl = 3 self.ALL_chl = 9 self.port = 'COM3' def relay_send(self,send_code): if self.port: relay_serial = serial.Serial(self.port, 9600, timeout = 1) if not relay_serial.isOpen(): relay_serialspan class="token punctuation">.Open()
relay_serial.write(bytes.fromhex(send_code))
time.sleep(0.5) #等待操作完成,防止干扰后续指令
relay_serial.close()
def ALL_ON(self):
send_code = self.chl_ON_code[self.ALL_chl - 1]
print(send_code)
self.relay_send(send_code)
logger.info("继电器控制: ALL_CHANNEL_ON")
def ALL_OFF(self):
send_code = self.chl_OFF_code[self.ALL_chl - 1]
self.relay_send(send_code)
logger.info("继电器控制: ALL_CHANNEL_OFF")
def GND_ON(self):
send_code = self.chl_ON_code[self.GND_chl - 1]
self.relay_send(send_code)
logger.info("继电器控制: GND_ON")
def GND_OFF(self):
send_code = self.chl_OFF_code[self.GND_chl - 1]
self.relay_send(send_code)
logger.info("继电器控制: GND_OFF")
def BAT_ON(self):
send_code = self.chl_ON_code[self.BAT_chl - 1]
self.relay_send(send_code)
logger.info("继电器控制: BAT_ON")
def BAT_OFF(self):
send_code = self.chl_OFF_code[self.BAT_chl - 1]
self.relay_send(send_code)
logger.info("继电器控制: BAT_OFF")
def ACC_ON(self):
send_code = self.chl_ON_code[self.ACC_chl - 1]
self.relay_send(send_code)
logger.info("继电器控制: ACC_ON")
def ACC_OFF(self):
send_code = self.chl_OFF_code[self.ACC_chl - 1]
self.relay_send(send_code)
logger.info("继电器控制: ACC_OFF")
if __name__ == "__main__":
relay = relay()
relay.port = 'COM5'
relay.ALL_chl = 1
relay.ALL_ON()