Помогите пожалуйста с кодом С#
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Помогите пожалуйста с кодом С#
Прошу прощения, но я тут вообще не при чем. Авторский подход меня приводит в ступор, и дальше пары строк в любом из его файлов я не продирался, мне это не по силам.
Так что ничего конкретного сказать не могу.
Так что ничего конкретного сказать не могу.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
Re: Помогите пожалуйста с кодом С#
ARV, "это" заработало
Файл func.h состоит изни должно быть ни чего лишнего в немфайл _proc_device.h состоити файл _proc_device.c
Файл func.h состоит из
Спойлер
Код: Выделить всё
//#ifndef FUNC_H
//#define FUNC_H
//==================
STATE (PROC_DEVICE_INIT, proc_device_init),
STATE (PROC_DEVICE_WAIT_SWITCH_MODE, proc_device_wait_switch_mode),
STATE (PROC_DEVICE_MANUAL, proc_device_manual_mode),
STATE (PROC_DEVICE_AUTOMAT, proc_device_automat_mode),
STATE (PROC_DEVICE_EMERG_MODE, proc_device_emerg_mode),
//==================
//#endifСпойлер
Код: Выделить всё
#ifndef PROC_DEVICE_H
#define PROC_DEVICE_H
#define __flash const
//==================
typedef void (*FUNC)(void);
//==================
typedef enum _proc_device
{
#define STATE(name, func) name
#include "func.h"
#undef STATE
PROC_DEVICE_STATES,
}proc_device_t;
void proc_device (void);
void proc_device_init (void);
void proc_device_wait_switch_mode (void);
void proc_device_manual_mode (void);
void proc_device_automat_mode (void);
void proc_device_emerg_mode (void);
void proc_fsm_func (FUNC __flash *ptr_func, unsigned char s);
__flash FUNC proc_device_func [PROC_DEVICE_STATES] ;
#endif
Спойлер
Код: Выделить всё
#include "_proc_device.h"
static proc_device_t _proc_device;
void proc_device (void)
{
_proc_device = PROC_DEVICE_INIT;
proc_fsm_func (proc_device_func, _proc_device);
_proc_device = PROC_DEVICE_MANUAL;
proc_fsm_func (proc_device_func, _proc_device);
_proc_device = PROC_DEVICE_AUTOMAT;
proc_fsm_func (proc_device_func, _proc_device);
_proc_device = PROC_DEVICE_WAIT_SWITCH_MODE;
proc_fsm_func (proc_device_func, _proc_device);
_proc_device = PROC_DEVICE_EMERG_MODE;
proc_fsm_func (proc_device_func, _proc_device);
}
void proc_device_init (void) {
PORTC = (1 << 0);
}
void proc_device_wait_switch_mode (void) {
PORTC = (1 << 1);
}
void proc_device_manual_mode (void) {
PORTC = (1 << 2);
}
void proc_device_automat_mode (void) {
PORTC = (1 << 3);
}
void proc_device_emerg_mode (void) {
PORTC = (1 << 4);
}
void proc_fsm_func (FUNC __flash *ptr_func, unsigned char s)
{
ptr_func [s] ();
}
__flash FUNC proc_device_func [PROC_DEVICE_STATES] =
{
#define STATE(name, func) func
#include "func.h"
#undef STATE
};Re: Помогите пожалуйста с кодом С#
В ARM нет необходимости в __flash потому что флеш, озу, регистры и др. в едином адресном пространстве равном 4 ГБ.Dimon456 писал(а):gcc_arm не проглотил
Явно указывать что данные во флеше нет необходимости.
Re: Помогите пожалуйста с кодом С#
Мурик, это откуда такое убеждение?
Для информации arm
Для информации arm
Спойлер
Код: Выделить всё
#define __flash const
Program Size:
text data bss dec hex filename
888 0 1032 1920 780 TEMPLATE_FSM_ARM.elf
proc_device_func 0x08000364
proc_device_func[0] 0x080002c5
proc_device_func[1] 0x080002d5
proc_device_func[2] 0x080002e5
proc_device_func[3] 0x080002f5
proc_device_func[4] 0x08000305Код: Выделить всё
#define __flash //const
Program Size:
text data bss dec hex filename
868 20 1028 1916 77c TEMPLATE_FSM_ARM.elf
proc_device_func 0x20000000
proc_device_func[0] 0x080003ed
proc_device_func[1] 0x08000409
proc_device_func[2] 0x08000425
proc_device_func[3] 0x08000441
proc_device_func[4] 0x0800045d-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Помогите пожалуйста с кодом С#
[uquote="Dimon456",url="/forum/viewtopic.php?p=3876863#p3876863"]...[/uquote]
Разобрался, гуд. В силу кое-каких обстоятельств не мог ответить раньше. Эти макросы называются X-Macro. Мне этот подход показал один специалист, профессионал. Много чего можно сделать с помощью таких макросов. Лично я сделал простую конструкцию. Название состояния и соответствующую ему функцию. Файл _proc_device.h или func.h создается для каждого автомата, либо программного модуля, в моем случае под программным модулем понимается proc_device.
При таком подходе можно делать очень гибкие вещи. Сделать один файл, в нем прописать нужные тебе вещи. А потом в нужных местах собирать так как тебе нужно. К примеру, local, язык интерфейса.
Примеры из проекта того товарища.
Разобрался, гуд. В силу кое-каких обстоятельств не мог ответить раньше. Эти макросы называются X-Macro. Мне этот подход показал один специалист, профессионал. Много чего можно сделать с помощью таких макросов. Лично я сделал простую конструкцию. Название состояния и соответствующую ему функцию. Файл _proc_device.h или func.h создается для каждого автомата, либо программного модуля, в моем случае под программным модулем понимается proc_device.
При таком подходе можно делать очень гибкие вещи. Сделать один файл, в нем прописать нужные тебе вещи. А потом в нужных местах собирать так как тебе нужно. К примеру, local, язык интерфейса.
Примеры из проекта того товарища.
Спойлер
Код: Выделить всё
MLMESSAGE( Enter , "Button >Enter<" , "Taste >Enter<" , "Tecla >Enter<" , "Touche >Enter<" , "Нажми > Ввод <" ) //14
MLMESSAGE( Grade , "Grade" , "Sorte" , "Grado" , "Produit" , "Продукт" ) //15
MLMESSAGE( Price , "Price" , "Preis" , "Precio" , "Prix" , "Цена" ) //16
MLMESSAGE( Sign , "Sign" , "Anzeige" , "Se al" , "Afficheur" , "Табло" ) //17
MLMESSAGE( LineGrade , "Line Grade " , "Zeile Sorte " , "L nea Grado " , "Ligne Prod. " , "Строка Прод" ) //18
MLMESSAGE( Lines , "Lines " , "Zeilen " , "L neas " , "Lignes " , "Строки" ) //19
MLMESSAGE( DigitsLine , "Digits/line " , "Ziffer/Zeile " , "D gitos/l nea " , "Chiffres/ligne " , "Цифры" ) //20
Спойлер
Код: Выделить всё
//PRODUCT( Name , En , Ru
PRODUCT( Empty , "--------- " , "----------" )
PRODUCT( Normal80 , "Normal 80 " , "Нормаль 80" )
PRODUCT( Ai92 , "AI 92 " , "АИ 92 " )
PRODUCT( Ai95 , "AI 95 " , "АИ 95 " )
Спойлер
Код: Выделить всё
SETUP( Light , "Яркость/bright" , 10 , 100 , 0 )
SETUP( Lang , "Language" , RUS , LANG_QTY-1 , 0 )
Спойлер
Код: Выделить всё
STATE ( EnterGrade , "Prices" , "УСТАНОВКА ЦЕН" , null_menu )
STATE ( EnterEffect , "Effect" , "ЭФФЕКТ" , null_menu )
STATE ( EnterBrightness , "Brightness" , "ЯРКОСТЬ" , null_menu )
STATE ( ConfigurationPin , "Configuration" , "КОНФИГУРАЦИЯ" , null_menu )
STATE ( ZeroesSpaces , "Zeros and spaces" , "НУЛИ И ПРОБЕЛЫ" , null_menu )
STATE ( ServiceMenu , "Service menu" , "СЕРВИС" , null_menu )
- Реклама
Re: Помогите пожалуйста с кодом С#
Demiurg, а я то все думал, ну как вытянуть название, а оно вон как делается
Спойлер
Код: Выделить всё
STATE (PROC_DEVICE_INIT, proc_device_init, "PROC_DEVICE_INIT"),
STATE (PROC_DEVICE_WAIT_SWITCH_MODE, proc_device_wait_switch_mode, "PROC_DEVICE_WAIT_SWITCH_MODE"),
STATE (PROC_DEVICE_MANUAL, proc_device_manual_mode, "PROC_DEVICE_MANUAL"),
STATE (PROC_DEVICE_AUTOMAT, proc_device_automat_mode, "PROC_DEVICE_AUTOMAT"),
STATE (PROC_DEVICE_EMERG_MODE, proc_device_emerg_mode, "PROC_DEVICE_EMERG_MODE"),Код: Выделить всё
char *Array [] = {
#define STATE(name, func, ima) ima
#include "func.h"
#undef STATE
};-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Помогите пожалуйста с кодом С#
Лучше как в MicroMenu ввести поле text. 1 вариант вытащить текст по индексу. 2 вариант, ввести поле. Что выгодней, смотрите сами.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Помогите пожалуйста с кодом С#
Dimon456, если речь идет о вытаскивании наименования пункта меню для его отображения на дисплее в случае "многоязычного" меню, то, имхо, опять-таки, не стоит изобретать велосипед, а действовать по аналогии с i18n: по Id меню в таблице строк находить нужный текст, определяя таблицу по номеру текущей "локали".
хотя, если честно, эта возня не стоит свеч: я не могу придумать варианта, когда переключение языка интерфейса во встраиваемом устройстве НЕОБХОДИМО, если это самое устройство не выходит на международный рынок в качестве серийно продаваемой продукции. что-то мне подсказывает, что здесь о таких устройствах никто не говорит.
для "персонального" девайса гораздо проще определять язык на этапе компиляции подстановкой нужного файла с константами в проект.
хотя, если честно, эта возня не стоит свеч: я не могу придумать варианта, когда переключение языка интерфейса во встраиваемом устройстве НЕОБХОДИМО, если это самое устройство не выходит на международный рынок в качестве серийно продаваемой продукции. что-то мне подсказывает, что здесь о таких устройствах никто не говорит.
для "персонального" девайса гораздо проще определять язык на этапе компиляции подстановкой нужного файла с константами в проект.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Помогите пожалуйста с кодом С#
не только. Причём, изначально не только.C# для ПК
Re: Помогите пожалуйста с кодом С#
[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3881526#p3881526"]не только. Причём, изначально не только.[/uquote]
Из википедии цитаты:
Да, за счет байт-кода он гибкий, потом появился Mono. Но в целом тут как с Java. Которой я на МК что-то тоже не вижу (и не удивляюсь этому).
Из википедии цитаты:
На тот момент изначально .NET - чисто винда. Дальше:C# (произносится си шарп) — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров компании Microsoft под руководством Андерса Хейлсберга и Скотта Вильтаумота[7] как язык разработки приложений для платформы Microsoft .NET Framework.
CLR - реализация виртуальной машины. Опять же для винды.C# разрабатывался как язык программирования прикладного уровня для CLR
Да, за счет байт-кода он гибкий, потом появился Mono. Но в целом тут как с Java. Которой я на МК что-то тоже не вижу (и не удивляюсь этому).
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Помогите пожалуйста с кодом С#
Ну, вообще-то википедия немного не договаривает (я не читал, руководствуюсь вышеприведенными цитатами). Под дотнет создавался даже камень, работали КПК, на которых ОС далеко не "чисто винда", да и сейчас попытки есть. Например, гугл выдает сходу: https://www.terraelectronica.ru/news/4076 и даже там автор слегка неправ, так как и ранее подобное уже было.
Не видеть Яву на мк странно, она там в куче мест... Имеет смысл поглядеть дальше вики. Или Вы имеете ввиду 8-битную мелочь?
Не видеть Яву на мк странно, она там в куче мест... Имеет смысл поглядеть дальше вики. Или Вы имеете ввиду 8-битную мелочь?
Re: Помогите пожалуйста с кодом С#
[uquote="NStorm",url="/forum/viewtopic.php?p=3881541#p3881541"]Да, за счет байт-кода он гибкий, потом появился Mono. Но в целом тут как с Java. Которой я на МК что-то тоже не вижу (и не удивляюсь этому).[/uquote]
На мк можно наблюдать python/lua/js или даже очень шустро работающие интерпретаторы бейсика, как на "Color Maximite 2". А на C# можно было под STM32F1(с 64К RAM) писать еще 10 лет назад.
ps. Вот реальный пример использования 7-ми летней давности.
На мк можно наблюдать python/lua/js или даже очень шустро работающие интерпретаторы бейсика, как на "Color Maximite 2". А на C# можно было под STM32F1(с 64К RAM) писать еще 10 лет назад.
ps. Вот реальный пример использования 7-ми летней давности.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Помогите пожалуйста с кодом С#
[uquote="ARV",url="/forum/viewtopic.php?p=3881485#p3881485"]...[/uquote]
Смотрите в будущее, вдруг наши советы помогут выйти кому-нибудь на этом форуме на международный рынок. Лично мне, в свое время, подобные обсуждения помогали и неоднократно. Пусть не международном рынке, в работе... Намекаю, наполняйте форум контекстом,смыслом.
Смотрите в будущее, вдруг наши советы помогут выйти кому-нибудь на этом форуме на международный рынок. Лично мне, в свое время, подобные обсуждения помогали и неоднократно. Пусть не международном рынке, в работе... Намекаю, наполняйте форум контекстом,смыслом.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Помогите пожалуйста с кодом С#
я не преподаватель, не учитель жизни, о том, кто и как будет использовать мои советы, не задумываюсь - это личное дело каждого. я делюсь своим мнением, если считаю его достойным, чтобы им поделиться.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Помогите пожалуйста с кодом С#
[uquote="Reflector",url="/forum/viewtopic.php?p=3881558#p3881558"]На мк можно наблюдать python/lua/js или даже очень шустро работающие интерпретаторы бейсика, как на "Color Maximite 2".[/uquote]
Это знаю. Но это интерпретаторы, а не виртуальная машина для байт-кода.
[uquote="Reflector",url="/forum/viewtopic.php?p=3881558#p3881558"]А на C# можно было под STM32F1(с 64К RAM) писать еще 10 лет назад.
ps. Вот реальный пример использования 7-ми летней давности.[/uquote]
По ссылке FEZ Panda 2. Там не STM32, а ARM7TDMI с 512 флэша и 96 рамы. Смотрю .NET Micro Framework только для ARM7, ARM9 и BlackFin вроде как анонсирован. И проект уже в архиве и не разивавается. Равно как и Panda эта. В общем видимо никому не нужно было.
Хотя я согласен, вы меня переубедили - был C# на МК в каком-то виде. Но видимо не особо это и нужно было, когда есть те же микропитоны и LUA с меньшими требованиями.
Хотя смотрите выше - меня переубедили примером, что C# на МК был.
PS: Хотя если вернуться к вопросу ТС темы - тема всё-равно не про C# была, ТС писал на C и не знал, что C# - это совсем другой язык.
Это знаю. Но это интерпретаторы, а не виртуальная машина для байт-кода.
[uquote="Reflector",url="/forum/viewtopic.php?p=3881558#p3881558"]А на C# можно было под STM32F1(с 64К RAM) писать еще 10 лет назад.
ps. Вот реальный пример использования 7-ми летней давности.[/uquote]
По ссылке FEZ Panda 2. Там не STM32, а ARM7TDMI с 512 флэша и 96 рамы. Смотрю .NET Micro Framework только для ARM7, ARM9 и BlackFin вроде как анонсирован. И проект уже в архиве и не разивавается. Равно как и Panda эта. В общем видимо никому не нужно было.
Хотя я согласен, вы меня переубедили - был C# на МК в каком-то виде. Но видимо не особо это и нужно было, когда есть те же микропитоны и LUA с меньшими требованиями.
Я имею в виду, что в реальности это почти нигде не используется. Ну слишком высокие накладные расходы для МК. Бессмыслица.Не видеть Яву на мк странно, она там в куче мест... Имеет смысл поглядеть дальше вики. Или Вы имеете ввиду 8-битную мелочь?
Хотя смотрите выше - меня переубедили примером, что C# на МК был.
PS: Хотя если вернуться к вопросу ТС темы - тема всё-равно не про C# была, ТС писал на C и не знал, что C# - это совсем другой язык.
Re: Помогите пожалуйста с кодом С#
[uquote="NStorm",url="/forum/viewtopic.php?p=3881585#p3881585"]Это знаю. Но это интерпретаторы, а не виртуальная машина для байт-кода.[/uquote]
Это все именно байт-код. (MicroPython includes a cross compiler which generates MicroPython bytecode (file extension .mpy). The Python code can be compiled into the bytecode either directly on a microcontroller or it can be precompiled elsewhere.)
Это все именно байт-код. (MicroPython includes a cross compiler which generates MicroPython bytecode (file extension .mpy). The Python code can be compiled into the bytecode either directly on a microcontroller or it can be precompiled elsewhere.)
.NET Micro Framework работает с STM32, даже на сайте ST есть документы, типа UM1676. На смену Micro пришел nanoFramework, работает на кортексах и ESP32.По ссылке FEZ Panda 2. Там не STM32, а ARM7TDMI с 512 флэша и 96 рамы. Смотрю .NET Micro Framework только для ARM7, ARM9 и BlackFin вроде как анонсирован. И проект уже в архиве и не разивавается. Равно как и Panda эта.
Re: Помогите пожалуйста с кодом С#
Demiurg и ARV, речь не о вытаскивании пункта меню для его отображения, скорее просто эксперимент, как это работает и на что потом можно применить.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Помогите пожалуйста с кодом С#
Тоже вариант. Молодец, тянешь тему. 
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Помогите пожалуйста с кодом С#
NStorm, да, путанье С и С# в последнее время почему-то часто происходит.


