Ik ben bezig om mijn duco box via de seriele port uit te lezen. Op github zijn een aantal voorbeeld scripts te vinden. Ik ben bezig met dit script: https://github.com/SteinH...aster/src/duco/ducobox.py Nu ben ik hier vanaf regel 703 aan het kopiëren geweest om de execute command te kopieren naar mijn eigen nieuwe (en lege) script. Ik loop alleen tegen een probleem aan dat het scipt (vermoedelijk) in python2 is geschreven en ik nu in 3 zit.
Als ik via putty een commando "fanspeed" geef krijg ik als output "FanSpeed: Actual 1929 [rpm] - Filtered 1942 [rpm]".
In mijn code stuur ik ook dit commando "fanspeed"maar kreeg toen de melding
TypeError: unicode strings are not supported, please encode to bytes: 'fanspeed'
Ik heb hierop gezocht en kwam tegen dat je .encode() moet toevoegen. Nu heb ik echter een probleem met mijn output
b'fansp\r ^\r Unknown Cmd\r\r> '
Dat begin stukje met b' komt omdat je encode toevoegd (wak ik ook weer via google achter). Maar ik heb geen idee hoe ik dit weg krijg en of ik wel de juiste encode gebruik. Ik heb tot op heden nog niet met python gewerkt.
Ik werk met Thonny in python3 op mijn raspbian op mijn pi2
Dit is mijn code
en de output, waarbij unknown cmd een normale response is op een verkeerde commando. De communicatie werkt in ieder geval wel
Als ik via putty een commando "fanspeed" geef krijg ik als output "FanSpeed: Actual 1929 [rpm] - Filtered 1942 [rpm]".
In mijn code stuur ik ook dit commando "fanspeed"maar kreeg toen de melding
TypeError: unicode strings are not supported, please encode to bytes: 'fanspeed'
Ik heb hierop gezocht en kwam tegen dat je .encode() moet toevoegen. Nu heb ik echter een probleem met mijn output
b'fansp\r ^\r Unknown Cmd\r\r> '
Dat begin stukje met b' komt omdat je encode toevoegd (wak ik ook weer via google achter). Maar ik heb geen idee hoe ik dit weg krijg en of ik wel de juiste encode gebruik. Ik heb tot op heden nog niet met python gewerkt.
Ik werk met Thonny in python3 op mijn raspbian op mijn pi2
Dit is mijn code
code:
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
| import serial import time serial = serial.Serial( port='/dev/ttyUSB0', baudrate = 115200, timeout=0.1 ) serial.flushInput() serial.flushOutput() def execute_command(command): print(command) reply = '' if serial: serial.write('\r'.encode()) time.sleep(0.5) serial.readline() cmd = command.encode("utf-8", "ignore") #for c in cmd: time.sleep(0.5) serial.write(cmd) time.sleep(0.5) serial.write('\r'.encode()) time.sleep(0.5) reply = str(serial.readline()).replace('\r', '\n') else: print("No serial device") return reply reply1 = execute_command('fanspeed') print (reply1) |
en de output, waarbij unknown cmd een normale response is op een verkeerde commando. De communicatie werkt in ieder geval wel
code:
1
2
3
4
5
| ========================= RESTART ========================= >>> %Run test.py fanspeed b'fanspd\r ^\r Unknown Cmd\r\r> ' >>> |