On 16/12/2013 14:31, sem...@gmail.com wrote:
i am new to python and programming all together.

i wrote a program to watch a serial port and look for a command.
then send a tcp packet.
all works great but it takes my processor load to about %25.
not sure if there is a way to make this more efficient.

import serial

import socket
HOST = '127.0.0.1'    # The remote host
PORT = 5250             # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))

##vvvvvvvvvvvv

ser = serial.Serial(
     port='COM10',\
     baudrate=9600,\
     parity=serial.PARITY_NONE,\
     stopbits=serial.STOPBITS_ONE,\
     bytesize=serial.EIGHTBITS,\
         timeout=0)

print("connected to: " + ser.portstr)

#this will store the line
line = []
c = 0
while True:
     for c in ser.readline():
         line.append(c)

         if c == '1':

             s.send('CG 1-21 ADD 1 reserveisoff 1 \r\n')
             data = s.recv(1024)
             print 'Received', repr(data)

             print("one")
             line = []
             break

         if c == '2':

             s.send('PLAY 1-1 AMB.mp4 \r\n')
             data = s.recv(1024)
             print 'Received', repr(data)
             s.send('LOADBG 1-1 EMPTY MIX 30 AUTO \r\n')
             data = s.recv(1024)
             print 'Received', repr(data)
             print("two")
             line = []

             break

s.close()
ser.close()

I think the problem might be that you've set the timeout to 0, so it
doesn't block if there's no data available.

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to