Да, здесь я не прав, давно было дело, уже стал подзабывать основы))
Настораживают всё время разные результаты. Надо добиться постоянного результата(при одних исходных само собой)
ЭВРИКА, я нашел другу програму, для управления строками на том же форуме, разобрал что там и какие данные идут, я увидел что идет конкретно вот это:
00 FF FF 00 0B 80 FF 01 30 31 EF B0 EF A2 74 65 73 74 FF FF 00
Все как и писал парень на форуме, все начинается с 01 30 и так далее, но не понял, зачем нужны первые 7 байтов
Причем уже нету ~128~f01 и так далее ни в одной кодировке, т.е, там похоже что-то другое бегает по ком-порту, но почему то и так и так работает
Строка то запускается от ардуино?
Хренушки там, во, он с той проги не хочет работать
И так, я разобрался в одном, то что при попытке отослать напрямую через Python эти данные: ~128~f01A\b\sTest строка полностью тухнет, ждет несколько секунд и издает звук(такое случается когда я отправляю данные с проги для редактирования надписей), я закодировал в байты и вот, хотя бы какой-то профит.
Только что узнал еще, что в конце стоят \r\r\r, работает теперь, надписи меняет, осталось это в ардуино впихнуть, отправлял сразу с str без массивов и т.п, скорость 9600
Дорогу осилит идущий))
Через ардуинку не получается, от код который я отправлял через Python:
import serial
import time
port = '/dev/ttyS0' (тут ком порт, у меня просто линукс)
baudrate = 9600
ser = serial.Serial(port, baudrate)
time.sleep(1)
data = "~128~f01A\b\sHello\r\r\r"
ser.write(data.encode())
ser.close()
А так
void setup() {
Serial.begin(9600);
delay(3000);
Serial.print("~128~f01A\b\sHello\r\r\r");
}
void loop() {
}
В том то и дело, что на пайтон я перевел это в байты, encode() превратил str в bytes
Увы, это не дало ничего
А что, на пайтон вывести байты в печать/консоль посмотреть не получается?
Хех) b’~128~f01A\b\sHello\r\r\r’ - это то что дает пайтон
Ладно, сейчас что-то еще придумаю
А что означает в Пайтоне “~”?
Может, надо сначала отправить несколько байтов, а потом строку:
Serial.write(0x80);
Serial.write(0xf01a); // здесь могут быть варианты с порядком байтов
Serial.print("Hello\r\r\r");
Я отправлял не по отдельности через Python, и ~ это не в пайтон, это полноценные данные которые гуляют по порту, и как я уже понял, это обязательная часть, так как микроконтроллер строки парсит эти данные, ~128~ это адрес строки
Как соотносятся между собой строки данных из сообщений №62 и №67?
Ну или с другой стороны: что конкретно отправляет Пайтон из строки “~128~f01A\b\sHello\r\r\r”?
Вероятно, вместо “\r” он отправляет символ возврата каретки. Т.е. пишется “\r”, а отправляется 0x0d.
Логично в принципе, возвврат каретки это обязательный критерий, без него не работает ничего
Я вообще-то задал вопросы.
Ну на “нет” и суда нет.
Я не вижу сути вопроса, я вроде бы на все вопросы еще выше ответил, и описал что я сделал, пайтон отправляет это если вам уже лень перевести те данные HEX: 0x7E, 0x31, 0x32, 0x38, 0x7E, 0x66, 0x30, 0x31, 0x41, 0x5C, 0x62, 0x5C, 0x73, 0x48, 0x0D, 0x0D, 0x0D
Но отправляя эти данные по ардуинке, строка никак не работает, вот код:
void setup() {
Serial.begin(9600);
delay(3000);
byte array[] = {0x7E, 0x31, 0x32, 0x38, 0x7E, 0x66, 0x30, 0x31, 0x41, 0x5C, 0x62, 0x5C, 0x73, 0x48, 0x0D, 0x0D, 0x0D};
Serial.write(array, sizeof(array));
}
void loop() {
}
Странные вы люди. Ну подсядьте на TX пару RX-ом переходника и прямо с обмена штатной софтины все срисуйте.
Мама списывать не разрешает !
Да, вот взял щас и так сделал, если бы это было так легко, отправляю те же байты что считал, не работает ![]()