|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.10.2015, 15:41 | #1 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
Как передать данные из программы в программу, C#
У меня есть программа С# Windows Form, на выходе которой имею два массива. Я запустил эту программу и получаю каждую секунду новые массивы, вывожу их на график. Пришла пора их как-то передать в совсем другую программу. Просто, вот создам я пустой Windows Forms и надо бы написать что-то типа
Idata[],Qdata[] get(data from Windows Forms 1); Text1 = Idata[]; И чтобы после запуска второго приложения оно автоматически брало данные из первого приложения и использовала их. Как это хоть примерно сделать? Как это вообще сделать? Это как (сделать)? |
21.10.2015, 15:57 | #2 |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
Через файлы, базу данных, параметры командной строки, тут еще много чего https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
|
21.10.2015, 16:17 | #3 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
Так вот интерес-то в том, что программы работают циклично. Я бы рад сделать это через файл. Но сначала давайте подробнее о моей цели - мне надо так, чтобы даже если на одном компьютере стоит программа-передатчик, а на другом - программа-приемник, то и в этом случае они все-равно имели связь друг с другом.
Если через файл - мне нужно постоянно держать файл в режиме записи - это факт, ведь передатчик всегда генерирует что-то новое, неустанно, а старые данные поступать во вторую программу не должны, то есть в тексте должны быть только конкретные данные, которые сразу же после возникновения схватываются приемной программой. А как тогда открыть файл на чтение в приемнике? Это будет быстро происходить? Допустим, я нажал на старт, и программа передает в файл символы "Привет, Мир!". Я сразу нажал на прием, и у меня примется либо "ривет, Мир!, либо "*неопознанная бинарная хрень*". Это я сделаю синхронизацию, но мне нужна вообще минимальная задержка. Как это сделать? Зы - я немного радист, поэтому я за программную реализацию - это мой путь №1. А путь №2 - передать данные хотя бы через виртуальные com-порты. Например, самый простой случай - я использую 2 Ардуино, одна на COM-1, другая на COM-2, но тут я проиграю в скорости. Ethernet - идеально. Но я не хочу брать два компьютера, мне нужно прежде всего, чтобы это запускалось на одном единственном ПК. Есть предложения? Последний раз редактировалось Krasi; 21.10.2015 в 16:21. |
21.10.2015, 16:25 | #4 |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
Если в одной сети, то именованные каналы берите, если в интернете, то вам тогда надо или сокеты или http или базу (с обоюдным доступом, что не оч. хорошо) использовать. Впрочем для локальной сети все это тоже подходит, и файлы, но с ними труднее, тут настройки доступа и т.п, не советовал бы.
|
21.10.2015, 16:53 | #5 |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
Вас не понять то 2 компа то уже один.
Если 1 компьютер и хотите файлы то смотрите сюда https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx Иначе от файлов лучше отказаться. Про СОМы и адруино совсем ничего не понял. |
21.10.2015, 16:54 | #6 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
Проблема в том, что это симуляция системы передачи данных, поэтому оптимальнее всего брать канал, в котором задержки точно не будет. Интернет не всегда работает без лагов, а Ethernet - самое то. Вот в идеале даже можно просто генерировать массивы с помощью звуковой карты, передавать их как звук, и принимать микрофоном. Но заметьте, что у меня стоит персональный комп без микрофона и динамика, а рядом куча соседей, которые не любят шум.
С другой стороны, можно просто соединить выход звуковой карты и ее вход. Вот это для меня кажется наиболее привлекательным. Возможно так сделать, можете подробнее объяснить? ЗЫ - насчет com-портов. У меня должно учитываться 2 случая. Либо я на одном компьютере генерирую одной программой массивы и принимаю другой. Либо я на одном компьютере генерирую данные, а на другом принимаю. По сети можно это сделать, но я просто не представляю пока, как это будет выглядеть. А вообще суть в том, что сгенерированные массивы мне желательно бы передать на какой-нибудь физический порт. Если будет два компа, то один com-порт, например, передает, а другой - принимает... Но тогда скорость будет максимум 115200 б/c? А вот если надо мне сделать связь между компьютерами, один из которых стоит дома, а другой на северном полюсе? Чтобы скорость была порядка 512 кб/c. Тогда com-порт ну вообще не тянет, то есть про него давайте не будем. Например, я передаю данные по Ethernet на программно-определяемую радиосистему, например, она делает норм сигнал и передает его на северный полюс, а там такая же вещь, только работающая на прием. Тогда смотрите: если я сейчас буду использовать тот же Ethernet или звуковой канал, то это будет самый реалистичный вариант, многие программно-определяемые радиосистемы работают с USB 3.0 или с Ethernet. А звуковой канал - потому что этот же модем мне нужен для генерации звуковых сигналов, и это интересно рассмотреть. Хотя приборы могут работать и по локальной сети, это вариант! Но предложите что-нибудь для этой задачи, я просто не программист, и пока мне решение видится только на таких пальцах, как "открыть файл, выставить его на передачу..." или "использовать такую-то библиотеку для управления Ethernet"... Ну короче мне бы подробнее, я зашел на сайт, который Вы скинули, мне еще рано такие сайты читать без дополнительных комментариев Последний раз редактировалось Krasi; 21.10.2015 в 17:10. |
21.10.2015, 17:27 | #7 |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
При чем тут вообще СОМ порты?
Не понимаю что вы хотите, передать от 1 программы в другую информацию я вам дал еще в 1 посте, во втором уточнил разницу между локальной и интернет, всё. Если у вас приборы могут сами передавать, то совсем не понятно в чем тогда вопрос. |
21.10.2015, 17:45 | #8 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
Вопрос в том, что надо передать информацию на приборы. Это делается по Ethernet, либо по USB 3.0. Но должна быть возможность передать данные без приборов, как бы в режиме симуляции. То есть, как пример - просто по Ethernet между 2 компьютерами передавать данные. Я тут подумал, можно и просто через локальную сеть, да и Вы так предложили. Поэтому забудьте остальное. Я думаю, передача по сети - самое то. А как можно сделать простейшую программу, которая будет передавать некоторый массив значений по локальной сети, просто чтобы открыл браузер, набрал 127.0.0.1 и увидел массивы, которые отправляются?
|
21.10.2015, 18:26 | #9 |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
А браузер зачем сюда притянули? он вам не поможет
Вам надо что то из списка в #1, я бы подумал про именованные каналы или сокеты. |
21.10.2015, 18:30 | #10 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
http://professorweb.ru/my/csharp/web/level3/3_2.php Сокеты. Вроде то. А я могу во время работы с сокетом считать данные с программы с помощью браузера? Передатчик у меня будет сервером, или клиентом? До меня это еще не дошло
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как передать данные в поток.. | login10 | C# (си шарп) | 9 | 01.11.2014 15:08 |
Как передать данные из WebBrowser'a ? | Santa86 | C# (си шарп) | 0 | 15.10.2014 17:42 |
как передать на сервер табличные данные | Arassir | PHP | 3 | 02.10.2011 23:07 |
Как передать данные из БД в ComBox | uni | Microsoft Office Excel | 8 | 22.07.2011 08:20 |
Как передать данные уже в запущеную программу | dr.Chas | Общие вопросы Delphi | 15 | 18.06.2008 22:16 |