利用Python读取串口数据并发送到远程服务器

好久没更新了,拿出点前段东西写的东西发出来吧。硬件是用的树莓派,系统是代号为Wheezy的Debian系统,树莓派的串口设置去网上搜去,一搜一大堆。python依赖包用的PySerial,包括一个主文件和一个配置文件,配置文件如下:

[HARDWARE]SERIAL_DEV=/dev/ttyAMA0BAUDRATE=9600[SEND]REMOTE_URL=http://www.maben.com.cn/test.phpDELAY=5[RECV]REMOTE_URL=http://www.maben.com.cn/index.phpDELAY=100[LOG]ENABLE=1PATH=log.txt

程序如下:

#! /usr/bin/env python"""\Read data from serial ports and send to remote server.Design by maben (C) 2013.09.26 """import serialimport timeimport reimport jsonimport urllibimport urllib2import ConfigParserimport osclass Main:    __cfg = {            'hardware' : {},            'send' : {},            'recv' : {},            'log' : {}        }    __serial = None    __mac = None    def __init__(self):        self.__loadConfig()        self.__initSerialPort()        self.__mac = self.__getMAC()    def __loadConfig(self):        cfg = ConfigParser.ConfigParser()        try:            cfg.read('config.ini')            self.__cfg['hardware']['serialDev'] = cfg.get('HARDWARE','SERIAL_DEV')            self.__cfg['hardware']['baudrate'] = cfg.get('HARDWARE','BAUDRATE')            self.__cfg['send']['remoteUrl'] = cfg.get('SEND','REMOTE_URL')            self.__cfg['send']['delay'] = int(cfg.get('SEND','DELAY'))            self.__cfg['recv']['remoteUrl'] = cfg.get('RECV','REMOTE_URL')            self.__cfg['recv']['delay'] = int(cfg.get('RECV','DELAY'))            self.__cfg['log']['enable'] = cfg.get('LOG','ENABLE')            if self.__cfg['log']['enable'] == '1':                self.__cfg['log']['path'] = cfg.get('LOG','PATH')            for value in self.__cfg.values():                for k,v in value.items():                    if v == None:                        self.__halt('All configuration items cannot be empty!')        except:            self.__halt('Load config failed')        finally:            pass    def __initSerialPort(self):        self.__writeLog('Initializing the serial port')        self.__serial = serial.Serial(self.__cfg['hardware']['serialDev'],self.__cfg['hardware']['baudrate'])        try:            if not self.__serial.isOpen():                self.__serial.open()        except:            self.__halt('Cannot open serial port!')        finally:            pass    def __readSerialData(self):        self.__serial.flushOutput()        self.__serial.flushInput()        return self.__serial.readline()    def __sendData(self,data={}):        try:            params = urllib.urlencode(data)            request = urllib2.Request(self.__cfg['send']['remoteUrl'],params)            response = urllib2.urlopen(request)        except:            self.__writeLog('Send data to server failed')        finally:            pass    def __getMAC(self):        process = os.popen('/sbin/ifconfig eth0')        info = process.read()        process.close()        mac = re.search("HWaddr\s+(\S+)",info)        if mac:            return mac.group(1)        else:            return '00-00-00-00-00-00'    def run(self):        data = {}        data['mac'] = self.__mac;        while True:            data['data'] = self.__readSerialData()            self.__sendData(data)            time.sleep(self.__cfg['send']['delay'])    def __writeLog(self,log):        if self.__cfg['log']['enable'] == '1':            fp = open(self.__cfg['log']['path'],'a+')            try:                written = time.strftime('[%Y-%m-%d %H:%M:%S] ',time.localtime(time.time()))+log+"\r\n"                fp.write(written)            except:            except:                print 'Cannot written the log infomation'            finally:                fp.close()                pass        else:            print 'log not enable'            pass    def __halt(self,msg,isWriteLog = True):        if isWriteLog:            self.__writeLog(msg)        print msg        exit()    def __del__(self):        if self.__serial and self.__serial.isOpen():            self.__serial.close()if  __name__ == '__main__':    main = Main()    main.run()

这只是个半成品,只能读取数据并发送到远程,配置文件里面留了一个接口,就是从远程读取文件,然后发送到串口,由于暂时用不到,所以没再进行补充。

本文标题:利用Python读取串口数据并发送到远程服务器本文链接:http://www.maben.com.cn/archives/612.html转载请注明出处 一个有信念者所开发出的力量,大于99个只有兴趣者。

利用Python读取串口数据并发送到远程服务器

相关文章:

你感兴趣的文章:

标签云: