|
Готовые решения Здесь собраны все темы, по которым было найдено и выложено решение |
|
Опции темы | Поиск в этой теме | Опции просмотра |
12.02.2018, 16:51 | #1 |
Senior Member
Регистрация: Nov 2017
Сообщения: 563
Благодарил(а): 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 020
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Алтернатива для 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
Сообщения: 563
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Алтернатива для C/C++ на Trim5/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 020
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Алтернатива для C/C++ на Trim5/SMH4
"Hello" вывелось на экран? __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
12.02.2018, 20:10 | #6 |
Senior Member
Регистрация: Nov 2017
Сообщения: 563
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Алтернатива для C/C++ на Trim5/SMH4
Это был результат работы примера: Код:
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
Сообщения: 563
Благодарил(а): 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
Сообщения: 563
Благодарил(а): 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
Сообщения: 563
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Альтернатива для C/C++ на Trim5/SMH4
|
12.09.2018, 09:39 | #13 |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Альтернатива для C/C++ на Trim5/SMH4
__________________ В сегнетиксе не работаю с самого начала 2019 года. |
12.09.2018, 09:52 | #14 |
Senior Member
Регистрация: Nov 2017
Сообщения: 563
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Альтернатива для C/C++ на Trim5/SMH4
А я все выложил вчера на GitHub, в рамках проекта-шлюза MQTT для SMH4/Trim5.
Вот ссылка на конкретный файл: https://github.com/gelsrc/shm2mqtt/b...r/shm_linux.go |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Настройка VPN на роутерах Mikrotik для удаленной наладки системы | nizercat | Связь с внешним миром | 43 | 05.12.2019 22:16 |
Автоматика для "мини Алкозавода" | Kley107 | Вопросы о программировании | 62 | 08.11.2019 12:48 |
"Мегадевайс" для электриков на smh2G(i) | ailcat | Форум Segnetics | 9 | 30.08.2015 12:58 |
Правильная разводка сетей RS-485 | Arsie | Библиотека | 30 | 28.02.2014 13:52 |
Использование USB-хаба | Varnak | Вопросы о SMH-2G(i) | 8 | 01.03.2013 12:20 |