Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130
1

Межпроцессорное взаимодействие C# и C++

01.12.2012, 00:29. Показов 2988. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно передавать набор переменных разных типов.
Например для двух переменной типа double с использованием: CreateFileMapping
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2012, 00:29
Ответы с готовыми решениями:

.Net Core и межпроцессорное взаимодействие
Появилась задача, которую хочу решить на Core, посему начал плотно изучать с самых основ и уже...

Межпроцессорное взаимодействие
Добрый день. Может быть кто знает готовые библиотеки реализующие клиент-сервер (любые, кроме...

Межпроцессорное взаимодействие
Требуется хелпа, собственно условие: передача сообщений через стандартные потоки ввода-вывода,...

Межпроцессорное взаимодействие в пределах сессии ОС
Всем доброго... Вопрос совсем не по Delphi, но по WinAPI в частности, если лучше в другую ветку -...

4
Почетный модератор
Эксперт .NET
8721 / 3673 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
01.12.2012, 16:04 2
Что не получается? (код в студию)
0
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130
02.12.2012, 15:39  [ТС] 3
Я смогу тестить только в рабочии дни. Завтра код покажу для обсуждения, какие-то материалы нашел по этой теме.

Добавлено через 21 час 15 минут
В C# примеров не хватает.
C#
1
 MemoryMappedFile OneMemoryMappedFile = MemoryMappedFile.CreateNew("MyMapOne",1000);
Хочу далее записать переменную A типа float в первые 4 байта, а переменную B во вторые 4 байта?

Добавлено через 8 минут
И что-то не вижу здесь установки прав доступа для файла. Я же буду читать из другого приложения.

Добавлено через 17 минут
В С++

C++
1
2
3
4
5
  HANDLE map=OpenFileMappingA(FILE_MAP_WRITE,NULL,"MyMapOne");
       if(map)
         {
          float pb=(float)MapViewOfFile(map,FILE_MAP_WRITE,0,0,4);
       }
???

Добавлено через 1 час 2 минуты
C#
1
2
3
  MemoryMappedFile OneMemoryMappedFile = MemoryMappedFile.CreateNew("MyMapOne", 1000, MemoryMappedFileAccess.ReadWrite);
 MemoryMappedViewStream myMemoryMappedStream = OneMemoryMappedFile.CreateViewStream(0, 8, MemoryMappedFileAccess.ReadWrite);
  myMemoryMappedStream.Write //???
И надо числа A и B поместить в буфер, чтобы прочитать их оттуда.

Добавлено через 23 минуты
В С# вариант решения появился:
C#
1
2
3
4
5
6
MemoryMappedFile OneMemoryMappedFile = MemoryMappedFile.CreateNew("MyMapOne", 1000, MemoryMappedFileAccess.ReadWrite);
MemoryMappedViewStream myMemoryMappedStream = OneMemoryMappedFile.CreateViewStream(0, 8, MemoryMappedFileAccess.ReadWrite);
 var bytes = BitConverter.GetBytes(A);
                    var bytes1 = BitConverter.GetBytes(B);
                    myMemoryMappedStream.Write(bytes, 0, 4);
                    myMemoryMappedStream.Write(bytes1, 5, 4);
В C++ посложнее, и без помощи не обойтись.

Добавлено через 7 минут
C++
1
 PBYTE pb=(PBYTE)(MapViewOfFile(map,FILE_MAP_WRITE,0,0,8));
И здесь надо взять первые 4 байта pb, преобразовать их в float и присвоить переменной A1 значение. Также для B1.???
0
dondublon
03.12.2012, 11:49
  #4

Не по теме:

Цитата Сообщение от eugene7711 Посмотреть сообщение
Межпроцессорное взаимодействие
может, все-таки межпроцессное? 8-)

1
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130
03.12.2012, 12:21  [ТС] 5
Да)) Вопрос почти решился есть маленькие ошибки:
C#
1
2
3
4
5
6
MemoryMappedFile OneMemoryMappedFile = MemoryMappedFile.CreateNew("MyMapOne", 1000, MemoryMappedFileAccess.ReadWrite);
MemoryMappedViewStream myMemoryMappedStream = OneMemoryMappedFile.CreateViewStream(0, 8, MemoryMappedFileAccess.ReadWrite);
 var bytes = BitConverter.GetBytes(A);
                    var bytes1 = BitConverter.GetBytes(B);
                    myMemoryMappedStream.Write(bytes, 0, 4);
                    myMemoryMappedStream.Write(bytes1, 4, 4);
В последней строчке говорит за пределами диапазона. Вроде проверил bytes and bytes1 по 4 байта, открыл для просмотра 8 байт и пишу в них, в чем ошибка?

Добавлено через 27 минут
Все получилось. Указатель смещается при первом Write.
0
03.12.2012, 12:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2012, 12:21
Помогаю со студенческими работами здесь

Взаимодействие VB и VC++
Взаимодействие VB и VCPP. VB60 и VCPP50. Помогите решить проблемку. Есть VB проект и dll на...

Взаимодействие C# и 1c
Подскажите как такое реализовать? Есть некие устройства с которыми из программы C# можно без...

Взаимодействие МК и ПК
Здравствуйте! Недавно я сделал что-то вроде небольшого робота на Arduino UNO управляемого с ПК....

Взаимодействие 1С и C#
Добрый день. Есть такая задача - написать простейший графический редактор, в котором можно будет на...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru