С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100

Переписываем код с C++ Builder на C++/CLI

01.07.2015, 11:48. Показов 2885. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь переписать с Builder на Visual с++ код программы вот отсюда:
http://we.easyelectronics.ru/e... v-usb.html
Вот этот кусок не работает:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//---------------------------------------------------------------------------
#define  uchar  unsigned char
 
#include <vcl.h>
#pragma hdrstop
#include "main.h"
 
#include "hidlibrary.h" // Библиотека для работы с Hid устройствами
 
 
#include "../Hid_example_firmware/usbconfig.h"  // Здесь пишем путь к usbconfig.h
char  vendorName[]  = {USB_CFG_VENDOR_NAME, 0}; // для того что бы знать как
char  productName[] = {USB_CFG_DEVICE_NAME, 0}; // называется наше устройство
 
 
struct dataexchange_t           // Описание структуры для передачи данных
{
   uchar b1;        // Я решил для примера написать структуру на 3 байта.
   uchar b2;        // На каждый байт подцепим ногу из PORTB. Конечно это
   uchar b3;        // не рационально (всего то 3 бита нужно).
};                  // Но в целях демонстрации в самый раз.
                    // Для наглядности прикрутить по светодиоду и созерцать :)
 
struct dataexchange_t pdata = {0, 0, 0};
 
HIDLibrary <dataexchange_t> hid; // создаем экземпляр класса с типом нашей структуры
в начале ругалась эта часть:
C++
1
2
3
#include "../Hid_example_firmware/usbconfig.h"  // Здесь пишем путь к usbconfig.h
char  vendorName[]  = {USB_CFG_VENDOR_NAME, 0}; // для того что бы знать как
char  productName[] = {USB_CFG_DEVICE_NAME, 0}; // называется наше устройство

исправил таким образом:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#pragma once
 
 
namespace zxzx {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
 
#ifndef __usbconfig_h_included__
#define __usbconfig_h_included__
 
 
#define USB_CFG_IOPORTNAME      D
#define USB_CFG_DMINUS_BIT      4
#define USB_CFG_DPLUS_BIT       2
#define USB_CFG_CLOCK_KHZ       (F_CPU/1000)
#define USB_CFG_CHECK_CRC       0
 
#define USB_CFG_HAVE_INTRIN_ENDPOINT    1
#define USB_CFG_HAVE_INTRIN_ENDPOINT3   0
#define USB_CFG_EP3_NUMBER              3
#define USB_CFG_IMPLEMENT_HALT          0
#define USB_CFG_SUPPRESS_INTR_CODE      0
#define USB_CFG_INTR_POLL_INTERVAL      100
#define USB_CFG_IS_SELF_POWERED         0
#define USB_CFG_MAX_BUS_POWER           100
#define USB_CFG_IMPLEMENT_FN_WRITE      1
#define USB_CFG_IMPLEMENT_FN_READ       1
#define USB_CFG_IMPLEMENT_FN_WRITEOUT   0
#define USB_CFG_HAVE_FLOWCONTROL        0
#define USB_CFG_DRIVER_FLASH_PAGE       0
#define USB_CFG_LONG_TRANSFERS          0
#define USB_COUNT_SOF                   0
#define USB_CFG_CHECK_DATA_TOGGLING     0
#define USB_CFG_HAVE_MEASURE_FRAME_LENGTH   0
#define USB_USE_FAST_CRC                0
 
#define  USB_CFG_VENDOR_ID       0xc0, 0x16 /* = 0x16c0 = 5824 = voti.nl */
#define  USB_CFG_DEVICE_ID       0xdf, 0x05 /* obdev's shared PID for HIDs */
#define USB_CFG_DEVICE_VERSION  0x00, 0x01
#define USB_CFG_VENDOR_NAME     'w', 'e', '.', 'e', 'a', 's', 'y', 'e', 'l', 'e', 'c', 't', 'r', 'o', 'n', 'i', 'c', 's', '.', 'r', 'u'
#define USB_CFG_VENDOR_NAME_LEN 21
#define USB_CFG_DEVICE_NAME     'H', 'i', 'd', ' ', 'e', 'x', 'a', 'm', 'p', 'l', 'e'
#define USB_CFG_DEVICE_NAME_LEN 11
#define USB_CFG_DEVICE_CLASS        0
#define USB_CFG_DEVICE_SUBCLASS     0
 
#define USB_CFG_INTERFACE_CLASS     3
#define USB_CFG_INTERFACE_SUBCLASS  0
#define USB_CFG_INTERFACE_PROTOCOL  0
#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH    22
 
#define USB_CFG_DESCR_PROPS_DEVICE                  0
#define USB_CFG_DESCR_PROPS_CONFIGURATION           0
#define USB_CFG_DESCR_PROPS_STRINGS                 0
#define USB_CFG_DESCR_PROPS_STRING_0                0
#define USB_CFG_DESCR_PROPS_STRING_VENDOR           0
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT          0
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER    0
#define USB_CFG_DESCR_PROPS_HID                     0
#define USB_CFG_DESCR_PROPS_HID_REPORT              0
#define USB_CFG_DESCR_PROPS_UNKNOWN                 0
 
#endif /* __usbconfig_h_included__ */
 
 
char  vendorName[]  = {USB_CFG_VENDOR_NAME, 0}; // для того что бы знать как
char  productName[] = {USB_CFG_DEVICE_NAME, 0}; // называется наше устройство
 
#define  uchar  unsigned char
 
 
struct dataexchange_t           // Описание структуры для передачи данных
{
   uchar b1;        // Я решил для примера написать структуру на 3 байта.
   uchar b2;        // На каждый байт подцепим ногу из PORTB. Конечно это
   uchar b3;        // не рационально (всего то 3 бита нужно).
};                  // Но в целях демонстрации в самый раз.
                    // Для наглядности прикрутить по светодиоду и созерцать :)
 
struct dataexchange_t pdata = {0, 0, 0};
 
 
 
    /// <summary>
    /// Сводка для Form1
    /// </summary>
 
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }

но теперь ругается вот этот кусок:
Кликните здесь для просмотра всего текста
C++
1
struct dataexchange_t pdata = {0, 0, 0};

а именно пишет:
Кликните здесь для просмотра всего текста

1>d:\avr\program\1.0\zxzx\zxzx\Form1.h(1 62): error C2065: tHIDLibrary: необъявленный идентификатор
1>d:\avr\program\1.0\zxzx\zxzx\Form1.h(1 62): error C2275: zxzx::dataexchange_t: недопустимое использование этого типа в качестве выражения
1> d:\avr\program\1.0\zxzx\zxzx\Form1.h(79) : см. объявление "zxzx::dataexchange_t"
1>d:\avr\program\1.0\zxzx\zxzx\Form1.h(1 62): error C2065: hid: необъявленный идентификатор

как его победить подскажите пожалуйста?
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.07.2015, 11:48
Ответы с готовыми решениями:

Переписать код на C++ в C++/CLI
Подскажите пожалуйста как такой код написать в CLR #include &lt;iostream&gt; using namespace std; void NEW(int a, int&amp;lol) { lol =...

Перевести код с Pascal на С++/CLI
program project1; var k,m,i,j,fl:integer; mn:set of byte; a:array of double;//по условию размер(1;10)=и она вещественная ...

Перевести код из С# в C++/CLI (с использованием System.Runtime.Remoting)
Помогите перевести код из С# в C++/CLI Клиент код: using System.Threading.Tasks; using System.Runtime.Remoting; using...

5
 Аватар для SherHun
31 / 31 / 22
Регистрация: 22.06.2015
Сообщений: 102
01.07.2015, 22:56
Цитата Сообщение от war321 Посмотреть сообщение
Вот этот кусок не работает:
В смысле, в Builder всё в порядке, работает ?
0
02.07.2015, 01:15
Перенесено из раздела C++ Builder
0
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100
02.07.2015, 09:03  [ТС]
Цитата Сообщение от war321 Посмотреть сообщение
Вот этот кусок не работает:
В смысле, в Builder всё в порядке, работает ?
- в Builder работает а в Microsoft Visual Studio Express не работает.. Поэтому переписываю код для Microsoft Visual Studio Express - в указанном куске выдаёт ошибку.
0
 Аватар для SherHun
31 / 31 / 22
Регистрация: 22.06.2015
Сообщений: 102
02.07.2015, 21:06
сделайте что-нибудь консольное,
да не мучайтесь с формами, типа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#include<iostream>
#include<Windows.h>
#include "hidlibrary.h"
 
#define USB_CFG_VENDOR_NAME     'w', 'e', '.', 'e', 'a', 's', 'y', 'e', 'l', 'e', 'c', 't', 'r', 'o', 'n', 'i', 'c', 's', '.', 'r', 'u'
#define USB_CFG_DEVICE_NAME     'H', 'i', 'd', ' ', 'e', 'x', 'a', 'm', 'p', 'l', 'e'
 
struct CheckBox
{
    bool Checked;
    friend  std::ostream & operator << (std::ostream & os, const CheckBox & chbox)
    {
        if (chbox.Checked)
            os << 'v';
        else
            os << ' ';
        return os;
    }
};
 
CheckBox CheckBox1, CheckBox2, CheckBox3;
 
char  vendorName[] = { USB_CFG_VENDOR_NAME, 0 }; // для того что бы знать как
char  productName[] = { USB_CFG_DEVICE_NAME, 0 }; // называется наше устройство
 
int CorrectInput()
{
    char str[100];
    int res = -1;
    while (true)
    {
        std::cout << "Input value : 0 or 1.\n";
        std::cin >> str;
        res =  atoi(str);
        if (res == 0 || res == 1)
            break;
        else
            std::cout << "Error.\n";
    }
    return  res;
}
 
 
 
struct dataexchange_t           // Описание структуры для передачи данных
{
    unsigned char b1;        // Я решил для примера написать структуру на 3 байта.
    unsigned char b2;        // На каждый байт подцепим ногу из PORTB. Конечно это
    unsigned char b3;        // не рационально (всего то 3 бита нужно).
};                  // Но в целях демонстрации в самый раз.
// Для наглядности прикрутить по светодиоду и созерцать :)
 
struct dataexchange_t pdata = { 0, 0, 0 };
 
HIDLibrary <dataexchange_t> hid; // создаем экземпляр класса с типом нашей структуры
 
 
//---------------------------------------------------------------------------
 
int connect()  // этой функцией будем подключаться к устройству
{
    int i, n, res = 0;
    std::string exampleDeviceName = "";
 
    exampleDeviceName += vendorName;
    exampleDeviceName += " ";
    exampleDeviceName += productName;
 
    n = hid.EnumerateHIDDevices(); // узнаем все Hid устройства vid_16c0&pid_05df
    // vid и pid указаны в hidlibrary.h константой idstring
 
    for (i = 0; i<n; i++)            // ищем среди них наше
    {
        hid.Connect(i);
 
        // GetConnectedDeviceName() возвращает string,
        // где через пробел указаны vendor и product Name.
        // Сравниваем, если совпало - значить устройство наше
        if (hid.GetConnectedDeviceName() == exampleDeviceName)
        {
            res = 1;
            break;
        }
    }
    return res;
}
//---------------------------------------------------------------------------
 
// Кнопка "Принять данные"
void Button1Click()
{
    if (1 == connect())
    {
        hid.ReceiveData(&pdata);           // Читаем данные с устройства
        
        CheckBox1.Checked = (bool)pdata.b1;
        CheckBox2.Checked = (bool)pdata.b2;
        CheckBox3.Checked = (bool)pdata.b3;
    }
    else
    {
        std::string s = "";
        s += vendorName;
        s += " ";
        s += productName;
        s += " no connection.";
        //std::cout << s << std::endl;
        MessageBox(NULL, s.c_str(), "", NULL);
    }
}
//---------------------------------------------------------------------------
 
// Кнопка "Отправить данные"
void Button2Click()
{
    if (1 == connect())
    {
            pdata.b1 = (int)CheckBox1.Checked;
            pdata.b2 = (int)CheckBox2.Checked;
            pdata.b3 = (int)CheckBox3.Checked;
 
        hid.SendData(&pdata);           // Отправляем данные устройству
    }
    else
    {
        std::string s = "";
        s += vendorName;
        s += " ";
        s += productName;
        s += " no connection.";
        //std::cout << s << std::endl;
        MessageBox(NULL, s.c_str(), "", NULL);
    }
}
 
 
void SetCheckBoxes()
{
    std::cout << "CheckBox1" << std::endl;
    CheckBox1.Checked = CorrectInput();
    std::cout << "CheckBox2" << std::endl;
    CheckBox2.Checked = CorrectInput();
    std::cout << "CheckBox3" << std::endl;
    CheckBox3.Checked = CorrectInput();
}
int main()
{
 
    int res = 0;
    char str[100];
 
    while (true)
    {
        system("cls");
        std::cout << "    [" << CheckBox1 << "] CheckBox1\n";
        std::cout << "    [" << CheckBox2 << "] CheckBox2\n";
        std::cout << "    [" << CheckBox3 << "] CheckBox3\n";
        
        std::cout << "\n  1.Receive data\n";
        std::cout << "  2.Send data\n";
        std::cout << "  3.Set checkBoxes\n";
        std::cout << "  Your choice ?: ";
 
        
        std::cin >> str;
        res = atoi(str);
 
        if (res == 1)
            Button1Click();
        else if (res == 2)
            Button2Click();
        else if (res == 3)
            SetCheckBoxes();
        else
            continue;
    }
 
    std::cin.get();
    return 0;
}

в hidlibrary.h вписал
#pragma comment (lib, "setupapi.lib")

C++
1
2
3
4
5
#include <setupapi.h>
#include <string>
#include <vector>
#include <map>
#pragma comment (lib, "setupapi.lib")


В формах тоже получилось

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#pragma once
 
#include "hidlibrary.h"
#include <string>
#include <msclr/marshal_cppstd.h>
 
#define USB_CFG_VENDOR_NAME     'w', 'e', '.', 'e', 'a', 's', 'y', 'e', 'l', 'e', 'c', 't', 'r', 'o', 'n', 'i', 'c', 's', '.', 'r', 'u'
#define USB_CFG_DEVICE_NAME     'H', 'i', 'd', ' ', 'e', 'x', 'a', 'm', 'p', 'l', 'e'
 
char  vendorName[] = { USB_CFG_VENDOR_NAME, 0 }; // для того что бы знать как
char  productName[] = { USB_CFG_DEVICE_NAME, 0 }; // называется наше устройство
 
 
struct dataexchange_t           // Описание структуры для передачи данных
{
    unsigned char b1;        // Я решил для примера написать структуру на 3 байта.
    unsigned char  b2;        // На каждый байт подцепим ногу из PORTB. Конечно это
    unsigned char  b3;        // не рационально (всего то 3 бита нужно).
};                  // Но в целях демонстрации в самый раз.
// Для наглядности прикрутить по светодиоду и созерцать :)
 
struct dataexchange_t pdata = { 0, 0, 0 };
 
HIDLibrary <dataexchange_t> hid; // создаем экземпляр класса с типом нашей структуры
 
namespace zxzx {
 
    
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
 
            vendorName += USB_CFG_VENDOR_NAME; // для того что бы знать как
            productName += USB_CFG_DEVICE_NAME; // называется наше устройство
 
        }
 
        String^ vendorName; // для того что бы знать как
        String^  productName;//  называется наше устройство
 
 
 
    public:
        int connect()  // этой функцией будем подключаться к устройству
        {
            int i, n, res = 0;
            String^  exampleDeviceName = "";
 
            exampleDeviceName += vendorName;
            exampleDeviceName += " ";
            exampleDeviceName += productName;
 
            n = hid.EnumerateHIDDevices(); // узнаем все Hid устройства vid_16c0&pid_05df
            // vid и pid указаны в hidlibrary.h константой idstring
 
            for (i = 0; i<n; i++)            // ищем среди них наше
            {
                hid.Connect(i);
 
                // GetConnectedDeviceName() возвращает string,
                // где через пробел указаны vendor и product Name.
                // Сравниваем, если совпало - значить устройство наше
                if (hid.GetConnectedDeviceName() == msclr::interop::marshal_as< std::string >(exampleDeviceName))
                {
                    res = 1;
                    break;
                }
            }
            return res;
        }
 
    
        //  добавляем на форму три CheckBox-а и две обычных кнопки:
    private: System::Windows::Forms::CheckBox^  checkBox1;
 
    private: System::Windows::Forms::CheckBox^  checkBox2;
    private: System::Windows::Forms::CheckBox^  checkBox3;
    private: System::Windows::Forms::Button^  button1;
    private: System::Windows::Forms::Button^  button2;
 
 
        private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
        {
            if (1 == connect())
            {
                hid.ReceiveData(&pdata);           // Читаем данные с устройства
 
                checkBox1->Checked = (bool)pdata.b1;
                checkBox2->Checked = (bool)pdata.b2;
                checkBox3->Checked = (bool)pdata.b3;
            }
            else
            {
                String^ s = "";
                s += vendorName;
                s += " ";
                s += productName;
                s += " не подключено.";
                MessageBox::Show(s);
            }
        }
    private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e)
    {
        if (1 == connect())
        {
            pdata.b1 = (int)checkBox1->Checked;
            pdata.b2 = (int)checkBox2->Checked;
            pdata.b3 = (int)checkBox3->Checked;
            hid.SendData(&pdata);           // Отправляем данные устройству
        }
        else
        {
            String^ s = "";
            s += vendorName;
            s += " ";
            s += productName;
            s += " не подключено.";
            MessageBox::Show(s);
        }
    }
};
}
1
6 / 6 / 0
Регистрация: 31.05.2015
Сообщений: 59
05.09.2015, 17:25
сам столкнулся когда то с подобной проблемой.
Пытался так же переписать данный проект под vs CLI form-Задача абсолютно бестолковая, потому что билдер от визуал форм С++ отличается КАРДИНАЛЬНО и куда проще найти и переписать что то подобное под форм из других проектов.
Сам взял проект от микрочип. Но к сожалению в том проекте для обмена с юсб используются пакеты типа In/OUT, а нам для данного проекта нужны функции для работы с репортами типа феатуре.
В проекте вызваны данные функции из хид длл
данные отправки получения от устройства в массивах OUTBuffer[65] и INBuffer[65] Только нулевой элемент массива по моему под данные нельзя. Проект под VSC++ 10 , но ради интереса только что собрал под 2013, с первого раза не собралось-потребовалось очистить проект.
размер архива 8 метров
Вложения
Тип файла: zip HID_USB_VS10_C++.zip (8.28 Мб, 26 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.09.2015, 17:25
Помогаю со студенческими работами здесь

Переделать код из C# в C++/CLI
кто знает как эту часть переделать в с++ private void Form1_Load(object sender, EventArgs e) { ...

Линейный код в классы C++\CLI
Уважаемые форумчане, прошу помощи в решении следующего вопроса. Имеется законченный код, который хочется преобразовать в классы на...

Перенести код из C++ Builder 5 в C++ Builder 2009
Здравствуйте! Назрела проблема, может быть поможете. СУть в следующем - сделал прогу на 5-ом Билдере, приношу преподу показывать, а там...

Исходный код C++ Builder 6 в С++ Builder 5
Всем добрый вечер, ребята подскажите пожалуйста может кто сталкивался когда нужно исходник из 6 версии Builder'a описать в исходном коде 5...

Перенести код из VC++ в CPP Builder (код использует DLL)
Такая проблема. Есть DLL + пример её использования на Visual C++, пытаюсь этот пример перенести в Builder. Проблемы возникают в самом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru