#!/etc/python3.5
"""
安装serial串口通迅模块:
sudo apt-get install python-pip
pip install pyserial

查询CH340单片机模块是否驱动
1.首先确认系统支持USBSerial,输入以下命令:
     lsmod | grep usbserial
2.接上USB串口线,看看系统是否可以识别。输入以下命令:
     dmesg | grep ttyUSB
     或者直接可以到/ dev下看看有没有ttyUSB0或ttyUSB1
单片机模板:CH340
//打开串口0, 9600,8N1,连接超时0.5秒
ser=serial.Serial("/dev/ttyUSB0",9600,timeout=0.5) #使用USB连接串行口
ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5) #使用树莓派的GPIO口连接串行口
ser=serial.Serial(1,9600,timeout=0.5)#winsows系统使用com1口连接串行口
ser=serial.Serial("com1",9600,timeout=0.5)#winsows系统使用com1口连接串行口
ser=serial.Serial("/dev/ttyS1",9600,timeout=0.5)#Linux系统使用com1口连接串行口


portx="/dev/ttyUSB0"

    bps=11520

    timex=5
     # 打开串口,并得到串口对象
    ser=serial.Serial()
"""

import serial
import io
import sys
import time
import  socket
import subprocess
import uuid
import os
import re

class SerialClass:
    def __init__(self,portx,bps,timex):
        self.portx=portx#端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等
        self.bps=bps#波特率,标准值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200
        self.timex=timex#超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
        self.ser=serial.Serial(self.portx,self.bps,timeout=self.timex)
        self.GetData=""#清空当次读取

    def WriteSerialCommunicationData(self,Str):
        try:
            time.sleep(1)
            result=self.ser.write(Str.encode("gbk"))#写数据
            time.sleep(1)
            print("\033[33mWrite Serial Communication Data is "+Str+"\033[0m")
            return True
        except Exception as e:
            print("\033[31m"+e+"\033[0m")
            return False

    def ReadSerialCommunicationData(self,Str):
        try:
            if(self.WriteSerialCommunicationData(Str)==True):
                self.GetData=self.ser.read(self.ser.in_waiting).decode("gbk")
                time.sleep(1)
                self.GetData=self.GetData[:self.GetData.find("\n")-2]
                time.sleep(1)
                return True
            else:
                return False
        except Exception as e:
            print("\033[31m"+e+"\033[0m")
            return False
    def SerialClose(self):
        self.ser.close()