|
Готовые решения Здесь собраны все темы, по которым было найдено и выложено решение |
|
Опции темы | Поиск в этой теме |
12.02.2018, 16:51 | #1 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Альтернатива для C/C++ на Trim5/SMH4, язык Go
Не встречал на форуме упоминание альтернативы компилируемым языкам C/C++ на Trim5/SMH4.
Хотя "золото" лежит под ногами в виде языка (платформы) Go (https://ru.wikipedia.org/wiki/Go). Особенностью Go является хорошая кросс-платформенность из коробки. Для того, что бы собрать "Привет, мир" под Windows, который будет работать на Trim5/SMH4: Код:
package main import "fmt" func main() { fmt.Printf("hello, world\n") } Код:
set GOOS=linux set GOARCH=arm set GOARM=7 go build hello |
12.02.2018, 17:01 | #2 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 160
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Алтернатива для C/C++ на Trim5/SMH4
Вы это проверяли?
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
12.02.2018, 17:06 | #3 | |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Алтернатива для C/C++ на Trim5/SMH4
Цитата:
Что же насчёт гоу - я лично приветствую пошаговое руководство, где что скачать, что где прописать и как что запускать, с комментариями и тому подобными вещами. Тогда я на досуге и сам потестирую, что там по производительности и ресурсам и так далее. Без мануала я до этого доберусь никогда, скорее всего, так как некогда разбираться, что куда, и без этого хватает интересных задач на выходные =) __________________ В сегнетиксе не работаю с самого начала 2019 года. |
|
12.02.2018, 17:43 | #4 | |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Алтернатива для C/C++ на Trim5/SMH4
Да, проверял, запускал на SMH4.
Цитата:
Если для Windows: 1. Скачиваем дистрибутив со страницы https://golang.org/dl/, сейчас для Windows msi-дистрибутив занимает 91 Мб. 2. Устанавливаем, можно все по-умолчанию. 3. Создаем рабочий каталог: Код:
mkdir "%USERPROFILE%\go\src\hello" 4. Создаем в этом каталоге "привет мир", файл hello.go: Код:
package main import "fmt" func main() { fmt.Printf("hello, world\n") } Код:
go build 6. Если выполнить: Код:
set GOOS=linux set GOARCH=arm set GOARM=7 go build |
|
12.02.2018, 18:16 | #5 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 160
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Алтернатива для C/C++ на Trim5/SMH4
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
12.02.2018, 20:10 | #6 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Алтернатива для C/C++ на Trim5/SMH4
Hello вывелось, математика работает, сеть работает, многопоточность работает...
Это был результат работы примера: Код:
package main import ( "fmt" "math" "math/rand" "net" "time" ) func main() { fmt.Println("hello, world!") for i := 0; i < 3; i++ { r := rand.Float64() fmt.Printf("cycle=%v r=%v sin(r)=%v\n", i, r, math.Sin(r)) } sock, err := net.Listen("tcp", "localhost:7777") if err != nil { fmt.Println("Error accepting: ", err.Error()) return } go server(sock) time.Sleep(time.Second) c, err := net.Dial("tcp", "localhost:7777") c.Write([]byte("hello, localhost!")) c.Close() time.Sleep(time.Second) fmt.Println("exit") } func server(s net.Listener) { defer s.Close() c, err := s.Accept() if err != nil { return } b := make([]byte, 4) for { n, err := c.Read(b) if err != nil { break } fmt.Println("server:", string(b[:n])) } fmt.Println("server complete!") } Последний раз редактировалось Gel, 12.02.2018 в 20:32 |
15.02.2018, 18:13 | #7 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Альтернатива для C/C++ на Trim5/SMH4
Кроме языка/платформы Go, так же неплохо с кросс-компиляцией обстоит дело и с языком/платформой Rust.
Rust -- не такой попсовый и популярный, как Go, но он более "мощный", c использованием Markdown для комментариев в коде, с лучшей продуманной системой сборки и пакетным менеджером Cargo. За большую функциональность приходится платить большей сложностью языка, одни только макросы на основе AST (Абстрактное синтаксическое дерево) чего стоят... Для Windows, кратко инструкция по установке выглядит следующим образом. 1. Что бы проекты собирались для Windows, необходимо проинсталлировать средства сборки C/C++, установить "Build Tools for Visual Studio 2017" со страницы https://www.visualstudio.com/downloa...al-studio-2017, при этом отметить инструменты C++ при установке. 2. Что бы проекты собирались для ARMv7, необходимо проинсталлировать средства сборки C/C++, установить gcc-linaro-7.2.1-2017.11-i686-mingw32_arm-linux-gnueabihf.tar.xz со страницы https://releases.linaro.org/componen...nux-gnueabihf/ 3. Загружаем дистрибутив Rust: https://www.rust-lang.org/ru-RU/install.html и устанавливаем его. 4. Устанавливаем библиотеки исполнения для ARMv7 со статической линковкой, выполняем команду: Код:
rustup target install armv7-unknown-linux-musleabihf Код:
[target.armv7-unknown-linux-musleabihf] linker = "....../bin/arm-linux-gnueabihf-gcc.exe" 6. Создаем шаблон проекта "hello" командой: Код:
cargo new hello --bin Код:
cargo build 8. Собираем версию под ARM командой: Код:
cargo build --target=armv7-unknown-linux-musleabihf Последний раз редактировалось Gel, 15.02.2018 в 18:31 |
15.02.2018, 18:16 | #8 |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Альтернатива для C/C++ на Trim5/SMH4
Одна только проблема - это доступ к шмемам, а значит и лоджику из всех этих структур. Выдернуть сторонней библиотекой шмем из структуры возможно, но это будет не просто... Я как-то пробовал, мне быстро надоело =)
__________________ В сегнетиксе не работаю с самого начала 2019 года. |
15.02.2018, 18:26 | #9 | |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Альтернатива для C/C++ на Trim5/SMH4
Цитата:
С другой стороны, использовать шмемы, как мне кажется, нужно в крайнем случае, когда по какой-то причине TCP и Modbus не подходят. Потому что при взаимодействии через Modbus/TCP заметно упрощается разработка и отладка приложения: это можно делать на другой платформе, подключаться по сети, а непосредственно на устройстве использовать уже готовый отлаженный результат. |
|
26.02.2018, 09:46 | #10 |
Новичок
Регистрация: Dec 2017
Сообщения: 2
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Альтернатива для C/C++ на Trim5/SMH4
Лучше Python, может быть только Си (для тех кто умеет конечно и готов тратить время). Почему питон, потому что большое кол-во библиотек с САМЫМ богатым функционалом. Думаю что все другие языки нервно курят в сторонке, не тратьте зря время.
Запускал, работает хорошо. Даже графику рисует. Жаль что только 2 Gb флэш памяти, все плотно получается если ставить много всего. Лучше 4 Gb. Одна боль - PyQt не получилось пока, ему иксы нужны похоже. Наверное можно просто Qt5? Напишите кто реально пробовал ... |
26.02.2018, 10:35 | #11 | |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Альтернатива для C/C++ на Trim5/SMH4
Цитата:
__________________ В сегнетиксе не работаю с самого начала 2019 года. |
|
11.09.2018, 19:22 | #12 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Альтернатива для C/C++ на Trim5/SMH4
Руки дошли поробовать шмем. Как и предполагалось, никаких проблем не возникло (в Go), ничего сложного нет, все входит и выходит...
|
12.09.2018, 09:39 | #13 |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Альтернатива для C/C++ на Trim5/SMH4
Если не затруднит - дайте, пожалуйста, пример, как работаете со шмемами из go.
__________________ В сегнетиксе не работаю с самого начала 2019 года. |
12.09.2018, 09:52 | #14 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Альтернатива для C/C++ на Trim5/SMH4
А я все выложил вчера на GitHub, в рамках проекта-шлюза MQTT для SMH4/Trim5.
Вот ссылка на конкретный файл: https://github.com/gelsrc/shm2mqtt/b...r/shm_linux.go |