python串口控制8通道继电器方法笔记

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_serial.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()

版权声明:本文为weixin_38003033原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。