-
Notifications
You must be signed in to change notification settings - Fork 1
/
serial-printer-demo3.py
59 lines (47 loc) · 1.51 KB
/
serial-printer-demo3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/python
# make work with wav files
# increase baud
import sys
import time
import serial
import base64
import os
import wave
def encode(line):
temp = base64.b64encode(bytes(str(line), encoding))
temp = temp.decode("Ascii") + "\n"
encoded = bytes(temp, encoding)
return encoded
def upload(filename):
ser.write(encode(filename))
if ".txt" in filename or ".py" in filename:
f = open(filename, "r")
for line in f:
encoded = encode(line)
decoded = base64.b64decode(encoded) # this and the following line are note necessary
print("sending: " + decoded.decode("Ascii"), end="")
ser.write(encoded)
if ".wav" in filename:
CHUNK = 1024
wf = wave.open(filename, 'rb')
data = wf.readframes(-1)
print(data[0])
for frame in data:
ser.write(encode(frame))
print(frame)
ser.write(bytes("*\n", encoding))
if __name__ == "__main__":
n = len(sys.argv)
if n < 2:
print("usage: python3 " + sys.argv[0] + " filename1 ...")
sys.exit()
ser = serial.Serial(port='/dev/ttyUSB0',
baudrate=115200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1)
encoding = 'iso-8859-1'
args = sys.argv[1:]
for filename in args:
upload(filename)