So, zum Abschluss meinerseits aufgrund Zeitmangels:
unsigned long pauseArray = {
433,500,107,365,498,486,499,93,
365,498,433,340,499,93,365,498
}
uint8_t sendArrayHx = {
0x52,0x1B,0x13,0x52,0x5A,0x12,0x52,0x53,
0x1A,0x1B,0x12,0x12,0x12,0x12,0x12,0x52,
0x12,0x12,0x12,0x12,0x12,0x52,0x5B,0x13,
0x80,0x52,0x1B,0x13,0x52,0x5A,0x1A,0x5B,
0x52,0x52,0x1A,0x12,0x1A,0x52,0x12,0x53,
0x12,0x1A,0x12,0x9A,0x00,0x52,0x1B,0x13,
0x52,0x5A,0x12,0x52,0x53,0x1A,0x1B,0x12,
0x12,0x12,0x12,0x1A,0x52,0x1B,0x13,0x5B,
0x5B,0x5B,0x53,0x5A,0x1B,0x80,0x52,0x1B,
0x13,0x52,0x5A,0x1A,0x13,0x5A,0x12,0x53,
0x1B,0x12,0x12,0x1A,0x13,0x1A,0x12,0x5B,
0x12,0x52,0x52,0x52,0x52,0x1A,0x1A,0x1B,
0x1A,0x13,0x1A,0x52,0x5A,0x52,0x52,0x13,
0x13,0x13,0x1A,0x52,0x1A,0x5A,0x1A,0x5A,
0x1B,0x5A,0x52,0x12,0x5B,0x52,0x52,0x13,
0x13,0x5A,0x13,0x53,0x1B,0x52,0x52,0x53,
0x1A,0x5A,0x52,0x13,0x1B,0x53,0x1B,0x5B,
0x92,0x52,0x1B,0x13,0x52,0x5A,0x1A,0x5B,
0x52,0x52,0x1A,0x12,0x1A,0x52,0x12,0x53,
0x12,0x1A,0x12,0x9A,0x00,0x52,0x1B,0x13,
0x52,0x5A,0x12,0x52,0x53,0x1A,0x1B,0x12,
0x12,0x12,0x12,0x1A,0x52,0x12,0x12,0x12,
0x12,0x12,0x1A,0x52,0x13,0x80,0x52,0x1B,
0x13,0x52,0x5A,0x1A,0x5B,0x52,0x52,0x1A,
0x12,0x1A,0x52,0x12,0x53,0x12,0x1A,0x12,
0x9A,0x00,0x52,0x1B,0x13,0x52,0x5A,0x12,
0x52,0x53,0x1A,0x1B,0x12,0x12,0x12,0x12,
0x1A,0x52,0x12,0x12,0x12,0x12,0x12,0x1A,
0x52,0x13,0x80,0x52,0x1B,0x13,0x52,0x5A,
0x1A,0x13,0x5A,0x12,0x1B,0x12,0x12,0x12,
0x1A,0x13,0x1A,0x12,0x5B,0x12,0x52,0x52,
0x53,0x52,0x1A,0x1A,0x1B,0x1A,0x13,0x1A,
0x52,0x5A,0x52,0x52,0x13,0x13,0x13,0x1A,
0x52,0x1A,0x5A,0x1A,0x5A,0x1B,0x5A,0x52,
0x12,0x5B,0x52,0x52,0x13,0x13,0x5A,0x13,
0x53,0x1B,0x52,0x52,0x53,0x1A,0x5A,0x52,
0x13,0x1B,0x53,0x1B,0x5B,0x93,0x52,0x1B,
0x13,0x52,0x5A,0x1A,0x5B,0x52,0x52,0x1A,
0x12,0x1A,0x52,0x12,0x53,0x12,0x1A,0x12,
0x9A,0x00,0x52,0x1B,0x13,0x52,0x5A,0x12,
0x52,0x53,0x1A,0x1B,0x12,0x12,0x12,0x12,
0x1A,0x52,0x12,0x12,0x12,0x12,0x12,0x1A,
0x52,0x13,0x80,0x52,0x1B,0x13,0x52,0x5A,
0x1A,0x5B,0x52,0x52,0x1A,0x12,0x1A,0x52,
0x12,0x53,0x12,0x1A,0x12,0x9A,0x52,0x1B,
0x13,0x52,0x5A,0x1A,0x5B,0x52,0x52,0x1A,
0x12,0x1A,0x52,0x12,0x53,0x12,0x1A,0x12,
0x9A,0x00,0x52,0x1B,0x13,0x52,0x5A,0x12,
0x52,0x53,0x1A,0x1B,0x12,0x12,0x12,0x12,
0x1A,0x52,0x12,0x12,0x12,0x12,0x12,0x1A,
0x52,0x13,0x80,0x52,0x1B,0x13,0x52,0x5A,
0x1A,0x13,0x5A,0x12,0x1B,0x12,0x12,0x12,
0x1A,0x13,0x1A,0x12,0x5B,0x12,0x52,0x52,
0x53,0x52,0x1A,0x1A,0x1B,0x1A,0x13,0x1A,
0x52,0x5A,0x52,0x52,0x13,0x13,0x13,0x1A,
0x52,0x1A,0x5A,0x1A,0x5A,0x1B,0x5A,0x52,
0x12,0x5B,0x52,0x52,0x13,0x13,0x5A,0x13,
0x53,0x1B,0x52,0x52,0x53,0x1A,0x5A,0x52,
0x13,0x1B,0x53,0x1B,0x5B,0x93,0x52,0x1B,
0x13,0x52,0x5A,0x1A,0x5B,0x52,0x52,0x1A,
0x12,0x1A,0x52,0x12,0x53,0x12,0x1A,0x12,
0x9A,0x00,0x52,0x1B,0x13,0x52,0x5A,0x12,
0x52,0x53,0x1A,0x1B,0x12,0x12,0x12,0x12,
0x1A,0x52,0x12,0x12,0x12,0x12,0x12,0x1A,
0x52,0x13}
uint8_t sendArrayDz = {
82,27,19,82,90,18,82,83,
26,27,18,18,18,18,18,82,
18,18,18,18,18,82,91,19,
128,82,27,19,82,90,26,91,
82,82,26,18,26,82,18,83,
18,26,18,154,0,82,27,19,
82,90,18,82,83,26,27,18,
18,18,18,26,82,27,19,91,
91,91,83,90,27,128,82,27,
19,82,90,26,19,90,18,83,
27,18,18,26,19,26,18,91,
18,82,82,82,82,26,26,27,
26,19,26,82,90,82,82,19,
19,19,26,82,26,90,26,90,
27,90,82,18,91,82,82,19,
19,90,19,83,27,82,82,83,
26,90,82,19,27,83,27,91,
146,82,27,19,82,90,26,91,
82,82,26,18,26,82,18,83,
18,26,18,154,0,82,27,19,
82,90,18,82,83,26,27,18,
18,18,18,26,82,18,18,18,
18,18,26,82,19,128,82,27,
19,82,90,26,91,82,82,26,
18,26,82,18,83,18,26,18,
154,0,82,27,19,82,90,18,
82,83,26,27,18,18,18,18,
26,82,18,18,18,18,18,26,
82,19,128,82,27,19,82,90,
26,19,90,18,27,18,18,18,
26,19,26,18,91,18,82,82,
83,82,26,26,27,26,19,26,
82,90,82,82,19,19,19,26,
82,26,90,26,90,27,90,82,
18,91,82,82,19,19,90,19,
83,27,82,82,83,26,90,82,
19,27,83,27,91,147,82,27,
19,82,90,26,91,82,82,26,
18,26,82,18,83,18,26,18,
154,0,82,27,19,82,90,18,
82,83,26,27,18,18,18,18,
26,82,18,18,18,18,18,26,
82,19,128,82,27,19,82,90,
26,91,82,82,26,18,26,82,
18,83,18,26,18,154,82,27,
19,82,90,26,91,82,82,26,
18,26,82,18,83,18,26,18,
154,0,82,27,19,82,90,18,
82,83,26,27,18,18,18,18,
26,82,18,18,18,18,18,26,
82,19,128,82,27,19,82,90,
26,19,90,18,27,18,18,18,
26,19,26,18,91,18,82,82,
83,82,26,26,27,26,19,26,
82,90,82,82,19,19,19,26,
82,26,90,26,90,27,90,82,
18,91,82,82,19,19,90,19,
83,27,82,82,83,26,90,82,
19,27,83,27,91,147,82,27,
19,82,90,26,91,82,82,26,
18,26,82,18,83,18,26,18,
154,0,82,27,19,82,90,18,
82,83,26,27,18,18,18,18,
26,82,18,18,18,18,18,26,
82,19}
Ungetestete Arrays, die ich mittels eines kleinen Pythonskripts aus der Rohdaten-Tabelle habe erstellen lassen:
inf = open('rohdaten.txt','r')
sendArrayHx = []
sendArrayDz = []
pauseArray = []
lastTime = 0.0
lastChar = ''
for line in inf:
if 'Async' in line:
txt = line.split(chr(9))
time = float(txt[2])
duration = 0.0
char = txt[4]
if lastTime > 0.0:
duration = time-lastTime
if (duration > 0.050):
lc = int(lastChar,0)+128
lastChar = "0x{:X}".format(lc)
pause = round(duration*1000)
pauseArray.append(pause)
if lastChar > "":
sendArrayHx.append(lastChar)
sendArrayDz.append(int(lastChar,0))
lastTime = time
lastChar = char
print("unsigned long pauseArray = {")
cCount = 0
count = 0
for p in pauseArray:
print(p,end="")
count += 1
cCount += 1
if count < len(pauseArray):
print(",",end="")
if cCount > 7:
print()
cCount = 0
print("}")
print("uint8_t sendArrayHx = {")
cCount = 0
count = 0
for p in sendArrayHx:
print(p,end="")
count += 1
cCount += 1
if count < len(sendArrayHx):
print(",",end="")
if cCount > 7:
print()
cCount = 0
print("}")
print("uint8_t sendArrayDz = {")
cCount = 0
count = 0
for p in sendArrayDz:
print(p,end="")
count += 1
cCount += 1
if count < len(sendArrayDz):
print(",",end="")
if cCount > 7:
print()
cCount = 0
print("}")
inf.close()
Bitte das Copy/Paste bei den Tabellenerstellungen zu verzeihen ... geht schöner, aber es ist ja nur ein einmal benötigtes Hilfsmittel.
Die Pausenzeiten sind in [ms] dargestellt.
Jetzt muss nur noch jemand den Pseudocode von oben umsetzen ...
Gruß
ec2021
[Edit] Die zu sendenden Bytes beinhalten bereits das gesetzte MSb dort, wo im Anschluss ans Senden die jeweilige spezielle Pause aus dem pauseArray zu verwenden ist! Erkennbar beispielsweise an 0x80 oder 0x92 etc. Beim Senden einfach immer binär mit 0x7F maskieren, beim Prüfen für die Pause mit 0x80 ...