Mcucpp

Форк
0
/
serial_tools.py 
75 строк · 2.0 Кб
1
from SCons.Script import *
2

3
def SerialOutput(env, target, source):
4
	import serial
5
	import serial.tools.list_ports
6
	import time
7
	import datetime
8

9
	portList = list(serial.tools.list_ports.comports())
10
	firstPort = portList[0]
11
	
12
	portName = firstPort[0]
13
	if "PORT_NAME" in env:
14
		portName = env["PORT_NAME"]
15
	portName = ARGUMENTS.get('PORT_NAME', portName)
16
	
17
	baudRate = 115200
18
	if "BAUD_RATE" in env:
19
		baudRate = env["BAUD_RATE"]
20
	baudRate = ARGUMENTS.get('BAUD_RATE', baudRate)
21

22
	print( "Listening serial port %s:  " % portName) 
23
	port = serial.Serial(portName, baudRate, bytesize=8, parity='N', stopbits=1, timeout=0.2)
24
	timeStart = time.time()
25
	timeout = 10 # seconds
26
	if 'PORT_TIMEOUT' in env:
27
		timeout = env['PORT_TIMEOUT']
28
	
29
	triggerMessage = ""
30
	
31
	if "SERIAL_TRIGGER_MESSAGE" in env:
32
		triggerMessage = env["SERIAL_TRIGGER_MESSAGE"]
33
	
34
	gotResponce = False
35
	wait = ['-', '\\', '|', '/']
36
	waitState = 0
37
	logFile = open(target[0].abspath, 'w')
38
	logFile.write('Log from %s %s\n' % (portName, datetime.datetime.now() ) )
39

40
	if len(triggerMessage) > 0:
41
		port.write(triggerMessage)
42
	
43
	while timeStart + timeout > time.time():
44
		s = port.read(1)
45
		if len(s) > 0:
46
			timeStart = time.time()
47
			if gotResponce == False:
48
				print( "\bOK")
49
			gotResponce = True
50
			if 3 in list(ord(b) for b in s):
51
				print("----------- End of transfer ---------------")
52
				logFile.write("----------- End of transfer ---------------")
53
				break
54
			sys.stdout.write(s)
55
			logFile.write(s)
56
		if gotResponce == False:
57
			sys.stdout.write('\b')
58
			sys.stdout.write(wait[waitState])
59
			waitState = waitState + 1
60
			if waitState >= len(wait):
61
				waitState = 0
62
	if gotResponce == False:
63
		print( "\bTimeout")
64
		logFile.write("Timeout")
65
		return "No responce on %s" % portName
66
	return None
67
	
68
def generate(env, **kw):
69
	serialOut = Builder(
70
		action = SerialOutput, 
71
		suffix = ".log")
72
	env.Append(BUILDERS = {'SerialOutput': serialOut})
73
	
74
def exists(env):
75
	return True

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.