Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
2 / 2 / 0
Регистрация: 22.12.2023
Сообщений: 22

Использование функции Питон в С++

05.02.2024, 13:14. Показов 4359. Ответов 43

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть готовая функция, написанная на питоне и взаимодействующая со многими библиотеками. Необходимо встроить эту функцию в код, написанный на С++. Как превратить код Питона в библиотеку и импортировать его в с++?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2024, 13:14
Ответы с готовыми решениями:

Задача: Взять заданную строку в кавычки вида «» . можно ли сразу решение и листинг пж . питон. код питон питон
Взять заданную строку в кавычки вида «» .

Функции в питон
Даны целые числа a1,…,an, b1,…,bn, k. Если в последовательности a1,…,an нет ни одного члена со значением k, то первый по порядку член этой...

Питон не видит переменную в функции
Здравствуйте! Не так давно начать разбирать в thinter. Пишу работу, где программа должна выводить 2 списка с переменными x и y соотв, как...

43
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,351
05.02.2024, 20:23
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от AntPR Посмотреть сообщение
Поэтому была написана отдельная программа на Питоне, которая эти вычисления выполняет и возвращает коэффициенты.
Что мешает Питону скинуть коэффициенты в файл, прочитать этот файл программой С++, ну и далее по списку?
1
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
05.02.2024, 21:14
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
ну так как насчёт чего-то вроде
Лучше с .txt расширением. Файл будет совместим на питоне и с++.
1
Модератор
Эксперт Java
 Аватар для alecss131
2902 / 1407 / 413
Регистрация: 11.08.2017
Сообщений: 4,512
Записей в блоге: 2
05.02.2024, 21:17
Использовать функции питона в плюсах можно 2 способами, первый подключение питона в виде embeded и запуск кода так. И второй компиляция кода в нативный (можно даже библиотеку) с помощью GraalPy, только как понимаю там в библиотеке будет упакован и интерпретатор питона.
Я понимаю что эти способы не решение для ТС, но просто для общего развития

Не по теме:

С помощью GraalVM, можно собирать в нативы не только Python, но и JS, Java, Ruby, R. А так же производить обратную операцию С/С++ (как и другие языки которые можно компилировать при помощи LLVM) байткод запускать на виртуальной машине по типу JVM

1
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,351
05.02.2024, 21:24
Цитата Сообщение от повар1 Посмотреть сообщение
Лучше с .txt расширением. Файл будет совместим на питоне и с++.
А чё, бинарные файлы питон того? Не переваривает?
1
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
05.02.2024, 21:35
Цитата Сообщение от alexu_007 Посмотреть сообщение
бинарные файлы питон того?
похоже https://dev.to/emilossola/cros... ython-36dg
1
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,351
05.02.2024, 21:53
Нафига такие танцы с бубном? Один раз записать питоном файл, прочитать его средствами С++, и сравнить цифирки. Если питон пишет, а С++ выводит на экран одно и то же - значит они совпадают. Один раз проверить...
1
2 / 2 / 0
Регистрация: 22.12.2023
Сообщений: 22
06.02.2024, 08:59  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Насколько я понял, автор и не предлагал запускать питон на контроллере.
Я понял, что на питоне у него выполнен некий расчет, результат которого нужно поместить в программу, которая потом будет исполняться на контроллере.
Если так, то это абсолютно нормальная практика, называемая кодогенерацией. На питоне необходимо сформировать, сгенерировать код на языке С: заголовочный файл; или заголовочный файл + файл реализации, где и будут находиться эти результаты.
Приношу извинения за плохое составление вопроса. Сейчас объясню. Я учусь создавать датчик давления. На данный момент почти всё готово, но необходимо откалибровать датчик. Есть микроконтроллер, который содержит в себе основные коэффициенты, откалибровав которые датчик начнёт показывать правильное давление. Там есть разные режимы и каждый отличается количеством коэффициентов и соответственно степенью точности. Память в микроконтроллере настолько маленькая, что туда можно вписать только результаты вычислений и простые формулы. Работу именно с микроконтроллером я реализую на языке Си.
Но у нас не простые формулы, у нас решение численным методом нелинейных систем уравнений, которые иногда содержат в себе по 8 уравнений с 8-ю неизвестными. Я изначально решил использовать питон для данной задачи, потому что на языке Си писать было долго, других языков не знаю, поэтому изучил Питон, написал код решающий данные задачи и радуюсь.
Таким образом, на Си я работаю с микроконтроллером, а на Питоне считаю для него коэффициенты калибровки.
И вот на данный момент всё выглядит так: я захожу в Си, получаю входные данные с микроконтроллера для калибровки, затем захожу в Питон, вставляю туда эти данные, производятся вычисления, получаю коэффициенты, затем копирую эти коэффициенты, вставляю их в код в Си. И это долго.
Я хочу, чтобы мне не приходилось работать ручками и что-то копировать и вставлять, а чтобы это всё делалось само.
1
Нарушитель
10908 / 5836 / 1289
Регистрация: 12.03.2015
Сообщений: 26,934
06.02.2024, 09:03
Цитата Сообщение от AntPR Посмотреть сообщение
Приношу извинения за плохое составление вопроса.
Сначала мы тебя дружно отпинаем (возможно ногами).
Цитата Сообщение от AntPR Посмотреть сообщение
Память в микроконтроллере настолько маленькая, что туда можно вписать только результаты вычислений и простые формулы.
Скока там памяти? И ваще, как называется контроллер?
Цитата Сообщение от AntPR Посмотреть сообщение
потому что на языке Си писать было долго, других языков не знаю, поэтому изучил Питон, написал код решающий данные задачи и радуюсь.
Великолепный план Уолтер! Надёжный, как швейцарские часы!
1
2 / 2 / 0
Регистрация: 22.12.2023
Сообщений: 22
06.02.2024, 09:32  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Скока там памяти? И ваще, как называется контроллер?
Приношу ещё извинения. Я через микроконтроллер STM32F103C8 программирую NSA2860, а не сам микроконтроллер. Да, всё так запутано. Но говорю сразу, памяти не хватит на вычисления, которые я делаю в Питоне. Не бейте ногами, план надёжный, доверьтесь мне
0
Нарушитель
10908 / 5836 / 1289
Регистрация: 12.03.2015
Сообщений: 26,934
06.02.2024, 09:42
Цитата Сообщение от AntPR Посмотреть сообщение
памяти не хватит на вычисления, которые я делаю в Питоне
А как ты это узнал?

Добавлено через 1 минуту
Цитата Сообщение от AntPR Посмотреть сообщение
Я через микроконтроллер STM32F103C8 программирую NSA2860
Даташыт дай. Мне самому, штоли, его искать?
-----
Нашёл. Вижу 20к памяти. А скока не хватает?

1
2 / 2 / 0
Регистрация: 22.12.2023
Сообщений: 22
06.02.2024, 09:46  [ТС]
Вот
Вложения
Тип файла: pdf NSA2860_General_Sensor_Conditioner_P42_DWIN.pdf (1.60 Мб, 6 просмотров)
0
Нарушитель
10908 / 5836 / 1289
Регистрация: 12.03.2015
Сообщений: 26,934
06.02.2024, 09:53
Цитата Сообщение от AntPR Посмотреть сообщение
Вот
NSA2860 - это чо? АЦП?
1
2 / 2 / 0
Регистрация: 22.12.2023
Сообщений: 22
06.02.2024, 09:53  [ТС]
Это память микроконтроллера, а я программирую микропроцессор через микроконтроллер. Я скинул выше его даташит.
0
Нарушитель
10908 / 5836 / 1289
Регистрация: 12.03.2015
Сообщений: 26,934
06.02.2024, 09:56
Цитата Сообщение от AntPR Посмотреть сообщение
Это память микроконтроллера, а я программирую микропроцессор через микроконтроллер.

Ладно, забей.
1
2 / 2 / 0
Регистрация: 22.12.2023
Сообщений: 22
06.02.2024, 10:20  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Ладно, забей.
В этом-то и суть. Тебе нужно мне довериться. Я своё отмучался, не рекомендую. Осталось объединить два кода. Вместо микроконтроллера в цитате ниже надо подставить микропроцессор.
Цитата Сообщение от AntPR Посмотреть сообщение
Таким образом, на Си я работаю с микроконтроллером, а на Питоне считаю для него коэффициенты калибровки.
И вот на данный момент всё выглядит так: я захожу в Си, получаю входные данные с микроконтроллера для калибровки, затем захожу в Питон, вставляю туда эти данные, производятся вычисления, получаю коэффициенты, затем копирую эти коэффициенты, вставляю их в код в Си. И это долго.
Я хочу, чтобы мне не приходилось работать ручками и что-то копировать и вставлять, а чтобы это всё делалось само.
0
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,351
06.02.2024, 12:09
Самый простой вариант с обменом данными через файлы не рассматривается?
1
Нарушитель
10908 / 5836 / 1289
Регистрация: 12.03.2015
Сообщений: 26,934
06.02.2024, 12:13
Цитата Сообщение от alexu_007 Посмотреть сообщение
Самый простой вариант с обменом данными через файлы не рассматривается?
Поддерживаю.
1
 Аватар для Pphantom
2488 / 1638 / 746
Регистрация: 17.03.2022
Сообщений: 5,351
06.02.2024, 12:18
Ну что ж, теперь можно отметить, что DrOffset великий экстрасенс. Собственно, в указанном им направлении и надо копать.
1
Нарушитель
10908 / 5836 / 1289
Регистрация: 12.03.2015
Сообщений: 26,934
06.02.2024, 12:31
Цитата Сообщение от Pphantom Посмотреть сообщение
Ну что ж, теперь можно отметить, что DrOffset великий экстрасенс.
Слава великому экстрасенсу!!
------
В 2019 году мы с напарником так и делали. Он писал прошивку для девайса, а я - виндовый софт по управлению этим девайсом. По его просьбе я отдельно в прогу добавил генератор си-модуля с рассчитанными коэффициентами калибровки.

пример на выходе

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
#include <stdint.h>
#include "CalibrationsData.h"
/*  Калибровочная таблица
  Шаг ослабления таблицы dA1 = dA2 = 5 дБ
  Шаг установления калибровочного ослабления dA = 5 дБ
  Индекс полинома i относительно ослабления A определяется
  в соответствии с полуинтервалом [A[i]; A[i+1]) */
 
// 1. Параметры калибровки
// 1.1. Параметры канала 1
// 1.1.1. Контрольная сумма калибровочных данных для канала 1
#pragma locate CALIBRATION_TABLE_CRC_CH1 0x08011000
uint32_t const CALIBRATION_TABLE_CRC_CH1 = 0xB507B6C4;
// 1.1.2. Шаг ослабления в калибровочной таблице для канала 1
#pragma locate DELTA_A_CH1 0x08011004
uint32_t const DELTA_A_CH1 = 0x40A00000; // 5
// 1.1.3. Количество полиномов в калибровочной таблице для канала 1
#pragma locate POLYNOME_COUNT_CH1 0x08011008
uint32_t const POLYNOME_COUNT_CH1 = 11;
// 1.1.4. Начальный уровень
#pragma locate STARTLEVEL_CH1 0x0801100C
uint32_t const STARTLEVEL_CH1 = 0x00000000; // 0
// 1.1.5. Основная калибровочная таблица канала 1
#pragma locate CALIBRATION_TABLE_CH1 0x08011010
uint32_t const CALIBRATION_TABLE_CH1[CAL_TAB_FACTORS_MAXCOUNT] = 
{
   0xBE1B728E,  0x00000000,  0x42979718,  0x44FD8000,  //    -0,1518,  0,0000,  75,7951,  2028,0000, 
   0x3D811119,  0xC011BB65,  0x4280D1D0,  0x45154000,  //    0,0630,  -2,2771,  64,4098,  2388,0000, 
   0x3F53E57F,  0xBFAA76C3,  0x42397682,  0x45265000,  //    0,8277,  -1,3317,  46,3657,  2661,0000, 
   0xC00A1B16,  0x4131584F,  0x42BE412B,  0x45393000,  //    -2,1579,  11,0841,  95,1273,  2963,0000, 
   0x40055E7F,  0xC1AA46A3,  0x42308023,  0x45576000,  //    2,0839,  -21,2845,  44,1251,  3446,0000, 
   0xBF5152A4,  0x411F9518,  0xC146D857,  0x45543000,  //    -0,8177,  9,9739,  -12,4278,  3395,0000, 
   0xBF900754,  0xC012A188,  0x41CFE39B,  0x45598000,  //    -1,1252,  -2,2911,  25,9861,  3480,0000, 
   0x40892B84,  0xC1995B10,  0xC2A2A22A,  0x45554000,  //    4,2866,  -19,1695,  -81,3167,  3412,0000, 
   0xC0D98138,  0x4234840F,  0x4241EC50,  0x453F6000,  //    -6,7970,  45,1290,  48,4808,  3062,0000, 
   0x40AF897B,  0xC2634E39,  0xC1201A0F,  0x455FF000,  //    5,4855,  -56,8264,  -10,0064,  3583,0000, 
   0xBFD93AC9,  0x41CBA71D,  0xC326DAF7,  0x452EE000   //    -1,6971,  25,4566,  -166,8553,  2798,0000  
}; // конец таблицы канала 1
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
 
// 2. Параметры калибровки
// 2.2. Параметры канала 2
// 2.2.1. Контрольная сумма калибровочных данных для канала 2
#pragma locate CALIBRATION_TABLE_CRC_CH2 0x08012000
uint32_t const CALIBRATION_TABLE_CRC_CH2 = 0x5AC7A2BF;
// 2.2.2. Шаг ослабления в калибровочной таблице для канала 2
#pragma locate DELTA_A_CH2 0x08012004
uint32_t const DELTA_A_CH2 = 0x40A00000; // 5
// 2.2.3. Количество полиномов в калибровочной таблице для канала 2
#pragma locate POLYNOME_COUNT_CH2 0x08012008
uint32_t const POLYNOME_COUNT_CH2 = 11;
// 2.2.4. Начальный уровень
#pragma locate STARTLEVEL_CH2 0x0801200C
uint32_t const STARTLEVEL_CH2 = 0x00000000; // 0
// 2.2.5. Основная калибровочная таблица канала 2
#pragma locate CALIBRATION_TABLE_CH2 0x08012010
uint32_t const CALIBRATION_TABLE_CH2[CAL_TAB_FACTORS_MAXCOUNT] = 
{
   0xBF1D0BC7,  0x00000000,  0x431722F3,  0x44B54000,  //    -0,6135,  0,0000,  151,1365,  1450,0000, 
   0x3EE2F8D8,  0xC1133B0A,  0x42D24100,  0x45051000,  //    0,4433,  -9,2019,  105,1270,  2129,0000, 
   0x3FEB8D0C,  0xC0235996,  0x42396C34,  0x451B0000,  //    1,8402,  -2,5523,  46,3557,  2480,0000, 
   0xC0BFE177,  0x41C86908,  0x431ED9B3,  0x4533E000,  //    -5,9963,  25,0513,  158,8504,  2878,0000, 
   0x40DF4256,  0xC281C91D,  0xC2216DC3,  0x455DD000,  //    6,9768,  -64,8928,  -40,3572,  3549,0000, 
   0xC0040A1D,  0x421F0A26,  0xC3260589,  0x45225000,  //    -2,0631,  39,7599,  -166,0216,  2597,0000, 
   0xC0195E42,  0x410D02AB,  0x4299AFF8,  0x451C7000,  //    -2,3964,  8,8132,  76,8437,  2503,0000, 
   0x3FDA314D,  0xC1D90F66,  0xC16C0CE1,  0x452F8000,  //    1,7046,  -27,1325,  -14,7531,  2808,0000, 
   0x3FE390E8,  0xBFC812D9,  0xC31E3B2A,  0x450DD000,  //    1,7779,  -1,5631,  -158,2311,  2269,0000, 
   0xBFF3B883,  0x41C8D6AC,  0xC22216EE,  0x44CFA000,  //    -1,9041,  25,1048,  -40,5224,  1661,0000, 
   0x3E6BF18F,  0xC05D3277,  0x428770FD,  0x44E70000   //    0,2304,  -3,4562,  67,7207,  1848,0000  
}; // конец таблицы канала 2
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
 
// 1. Параметры калибровки
// 1.3. Параметры канала 1
// 1.3.1. Контрольная сумма калибровочных данных для канала 1
#pragma locate CALIBRATION_TABLE_CRC_CH1_RESERVE 0x08013000
uint32_t const CALIBRATION_TABLE_CRC_CH1_RESERVE = 0xB507B6C4;
// 1.3.2. Шаг ослабления в калибровочной таблице для канала 1
#pragma locate DELTA_A_CH1_RESERVE 0x08013004
uint32_t const DELTA_A_CH1_RESERVE = 0x40A00000; // 5
// 1.3.3. Количество полиномов в калибровочной таблице для канала 1
#pragma locate POLYNOME_COUNT_CH1_RESERVE 0x08013008
uint32_t const POLYNOME_COUNT_CH1_RESERVE = 11;
// 1.3.4. Начальный уровень
#pragma locate STARTLEVEL_CH1_RESERVE 0x0801300C
uint32_t const STARTLEVEL_CH1_RESERVE = 0x00000000; // 0
// 1.3.5. Основная калибровочная таблица канала 1
#pragma locate CALIBRATION_TABLE_CH1_RESERVE 0x08013010
uint32_t const CALIBRATION_TABLE_CH1_RESERVE[CAL_TAB_FACTORS_MAXCOUNT] = 
{
   0xBE1B728E,  0x00000000,  0x42979718,  0x44FD8000,  //    -0,1518,  0,0000,  75,7951,  2028,0000, 
   0x3D811119,  0xC011BB65,  0x4280D1D0,  0x45154000,  //    0,0630,  -2,2771,  64,4098,  2388,0000, 
   0x3F53E57F,  0xBFAA76C3,  0x42397682,  0x45265000,  //    0,8277,  -1,3317,  46,3657,  2661,0000, 
   0xC00A1B16,  0x4131584F,  0x42BE412B,  0x45393000,  //    -2,1579,  11,0841,  95,1273,  2963,0000, 
   0x40055E7F,  0xC1AA46A3,  0x42308023,  0x45576000,  //    2,0839,  -21,2845,  44,1251,  3446,0000, 
   0xBF5152A4,  0x411F9518,  0xC146D857,  0x45543000,  //    -0,8177,  9,9739,  -12,4278,  3395,0000, 
   0xBF900754,  0xC012A188,  0x41CFE39B,  0x45598000,  //    -1,1252,  -2,2911,  25,9861,  3480,0000, 
   0x40892B84,  0xC1995B10,  0xC2A2A22A,  0x45554000,  //    4,2866,  -19,1695,  -81,3167,  3412,0000, 
   0xC0D98138,  0x4234840F,  0x4241EC50,  0x453F6000,  //    -6,7970,  45,1290,  48,4808,  3062,0000, 
   0x40AF897B,  0xC2634E39,  0xC1201A0F,  0x455FF000,  //    5,4855,  -56,8264,  -10,0064,  3583,0000, 
   0xBFD93AC9,  0x41CBA71D,  0xC326DAF7,  0x452EE000   //    -1,6971,  25,4566,  -166,8553,  2798,0000  
}; // конец таблицы канала 1
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
 
// 2. Параметры калибровки
// 2.4. Параметры канала 2
// 2.4.1. Контрольная сумма калибровочных данных для канала 2
#pragma locate CALIBRATION_TABLE_CRC_CH2_RESERVE 0x08014000
uint32_t const CALIBRATION_TABLE_CRC_CH2_RESERVE = 0x5AC7A2BF;
// 2.4.2. Шаг ослабления в калибровочной таблице для канала 2
#pragma locate DELTA_A_CH2_RESERVE 0x08014004
uint32_t const DELTA_A_CH2_RESERVE = 0x40A00000; // 5
// 2.4.3. Количество полиномов в калибровочной таблице для канала 2
#pragma locate POLYNOME_COUNT_CH2_RESERVE 0x08014008
uint32_t const POLYNOME_COUNT_CH2_RESERVE = 11;
// 2.4.4. Начальный уровень
#pragma locate STARTLEVEL_CH2_RESERVE 0x0801400C
uint32_t const STARTLEVEL_CH2_RESERVE = 0x00000000; // 0
// 2.4.5. Основная калибровочная таблица канала 2
#pragma locate CALIBRATION_TABLE_CH2_RESERVE 0x08014010
uint32_t const CALIBRATION_TABLE_CH2_RESERVE[CAL_TAB_FACTORS_MAXCOUNT] = 
{
   0xBF1D0BC7,  0x00000000,  0x431722F3,  0x44B54000,  //    -0,6135,  0,0000,  151,1365,  1450,0000, 
   0x3EE2F8D8,  0xC1133B0A,  0x42D24100,  0x45051000,  //    0,4433,  -9,2019,  105,1270,  2129,0000, 
   0x3FEB8D0C,  0xC0235996,  0x42396C34,  0x451B0000,  //    1,8402,  -2,5523,  46,3557,  2480,0000, 
   0xC0BFE177,  0x41C86908,  0x431ED9B3,  0x4533E000,  //    -5,9963,  25,0513,  158,8504,  2878,0000, 
   0x40DF4256,  0xC281C91D,  0xC2216DC3,  0x455DD000,  //    6,9768,  -64,8928,  -40,3572,  3549,0000, 
   0xC0040A1D,  0x421F0A26,  0xC3260589,  0x45225000,  //    -2,0631,  39,7599,  -166,0216,  2597,0000, 
   0xC0195E42,  0x410D02AB,  0x4299AFF8,  0x451C7000,  //    -2,3964,  8,8132,  76,8437,  2503,0000, 
   0x3FDA314D,  0xC1D90F66,  0xC16C0CE1,  0x452F8000,  //    1,7046,  -27,1325,  -14,7531,  2808,0000, 
   0x3FE390E8,  0xBFC812D9,  0xC31E3B2A,  0x450DD000,  //    1,7779,  -1,5631,  -158,2311,  2269,0000, 
   0xBFF3B883,  0x41C8D6AC,  0xC22216EE,  0x44CFA000,  //    -1,9041,  25,1048,  -40,5224,  1661,0000, 
   0x3E6BF18F,  0xC05D3277,  0x428770FD,  0x44E70000   //    0,2304,  -3,4562,  67,7207,  1848,0000  
}; // конец таблицы канала 2
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
#pragma locate CALIBRATION_MIN_CH1 0x08010000
uint16_t const CALIBRATION_MIN_CH1 = 0;
#pragma locate CALIBRATION_MAX_CH1 0x08010004
uint16_t const CALIBRATION_MAX_CH1 = 0;
#pragma locate CALIBRATION_MIN_CH2 0x08010008
uint16_t const CALIBRATION_MIN_CH2 = 0;
#pragma locate CALIBRATION_MAX_CH2 0x0801000C
uint16_t const CALIBRATION_MAX_CH2 = 0;


Сами коэффициенты я считал через математические функции из библиотеки GSL, которую подключал к delphi-проекту. И исходные данные формировал напарник через специальный диалог со всякими движочками, полями ввода и графиком.
1
2 / 2 / 0
Регистрация: 22.12.2023
Сообщений: 22
07.02.2024, 15:54  [ТС]
Короче, я поразбирался. Сделал так, что Сишный скрипт создает файл, в котором все данные, затем питоновский скрипт считывает эти данные, решает и создает новый файл, в котором лежат искомые коэффициенты, а уже потом Сишный скрипт считывает этот файл с коэффициентами и решает свою задачу. Но теперь осталась одна проблема: приходится запускать две программы одновременно, чтобы это решить. Как мне сделать просто, чтобы через Си запускался Питоновский скрипт? Операционная система Windows
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.02.2024, 15:54

Реализовать функции модуля питон!
Реализовать функции модуля указаных в скобках. В ВинРарер файл модуля с названием Tokinezer #!/usr/bin/env python # -*- coding:...

Вызов функции с другого питон файла
Есть например 2 файла data.py и body.py . В первый я пишу функции, а в другой основной код, для удобства. Как заставить, эту падлу, читать...

Почему ругается компилятор? (Питон, Функции)
#l11_ex_01_def.py def hello(name, eyes, old): print('Привет, '+ name + '!') print('Привет, ' , name , '!') print('Твой цвет...

ООП Питон. Нарисовать график функции на промежутке от [0.1]
Не рисует график import math import turtle as tr l = int(input(&quot;Введите значение параметра l: &quot;)) k =...

Почему Питон игнорирует дефолтовое значение параметра функции?
Имеется вот такой код ... class DebianSource: ... def __init__(self, path, controlfile='debian/control'): ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru