Службы Windows не могут иметь графический интерфейсов пользователя, таким образом, Вы должны будете или избавиться от GUI или разделить Ваше приложение на две части - сервис без UI и приложение "контроллера". Если у Вас есть исходный код, преобразовывание кода не-GUI на службу легко - Visual Studio имеет тип проекта 'службы Windows', который заботится об обертывании для Вас, и существует простая пошаговая демонстрация, которая показывает Вам, как создать проект развертывания, который будет заботиться об установке.
, Если Вы выбираете второй маршрут и должны поместить часть исходного кода GUI в контроллер, контроллер и сервис могут связаться через WCF, Дистанционную работу.NET или простые сокетные соединения с протоколом, который Вы определяете сами. Если Вы используете Дистанционную работу, несомненно, будут использовать "короткий" интерфейс, который передает данные с как можно меньшим количеством вызовов метода - каждый вызов имеет изрядное количество издержек.
, Если UI довольно прост, можно быть в состоянии сойти с рук использование конфигурационных файлов для входа и файлов журнала или Windows Event Log для вывода.
Если вы используете numpy / scipy, вы можете использовать функцию scipy.io.savemat
:
import numpy, scipy.io
arr = numpy.arange(9) # 1d array of 9 numbers
arr = arr.reshape((3, 3)) # 2d array of 3x3
scipy.io.savemat('c:/tmp/arrdata.mat', mdict={'arr': arr})
Теперь вы можете загрузить эти данные в MATLAB, используя File -> Загрузить данные. Выберите файл, и переменная arr
(матрица 3x3) будет доступна в вашей среде.
Примечание: я сделал это в scipy 0.7.0. (scipy 0.6 имеет savemat
в модуле scipy.io.mio
.) Подробнее см. в последней документации
РЕДАКТИРОВАТЬ: обновленная ссылка благодаря @ gnovice .
I wrote a small function to do this same thing, without need for numpy. It takes a list of lists and returns a string with a MATLAB-formatted matrix.
def arrayOfArrayToMatlabString(array):
return '[' + "\n ".join(" ".join("%6g" % val for val in line) for line in array) + ']'
Write "myMatrix = " + arrayOfArrayToMatlabString(array)
to a .m
file, open it in matlab, and execute it.
Я думаю, что ars дает наиболее простой ответ для сохранения данных в файл .mat из Python (с использованием savemat ). Чтобы немного добавить к их ответу, вы также можете загрузить файл .mat в MATLAB программно, используя функцию LOAD вместо того, чтобы делать это вручную с помощью меню окна команд MATLAB ...
Вы можете используйте форму синтаксиса команды команды LOAD:
load c:/tmp/arrdata.mat
или форму синтаксиса функции (если путь к файлу хранится в виде строки):
filePath = 'c:/tmp/arrdata.mat';
data = load(filePath);
Вы можете записать матрицу на Python в файл CSV и прочитать ее в MATLAB с помощью csvread.