Я создал Setup.exe моего приложения в Visual Studio 2019, используя C#, на моем компьютере. Я установил приложение на другой ноутбук, скопировав на этот ноутбук папку отладки с установочными файлами. Но после установки, когда я нажал на приложение, оно не открывается. Я также попытался изменить целевую работу приложения в Visual Studio до tnet в соответствии с ноутбуком. Но тот же эффект. Это приложение имеет ссылки на некоторые внешние файлы DLL, такие как DLL спектрометра и DLL Mathematica инструмента. Если все работает нормально, это приложение должно собирать данные со спектрометра, обрабатывать сигналы и отображать результаты при do tnet GUI.
Использованные ссылки и библиотеки
Спектрометр Ocean Optics - common64.dll, NETOmniDriver-NET40.dll
Wolfram Mathemtica связанный инструмент - ml32i4.dll, Wolfram.NETLink.dll
Пожалуйста, помогите мне в открытии моего приложения.
Пожалуйста, найдите код ниже.
namespace JointApp1
{
public partial class Form1 : Form
{
int numberOfSpectrometersFound;
int spectrometerIndex; // indicates which spectrometer we are using
OmniDriver.CCoWrapper wrapper;
private Wolfram.NETLink.MathKernel mathKernel;
public Form1(string[] args)
{
InitializeComponent(args);
wrapper = new OmniDriver.CCoWrapper();
spectrometerIndex = -1;
}
private void button5_Click(object sender, EventArgs e)
{
numberOfSpectrometersFound = wrapper.openAllSpectrometers();
if (numberOfSpectrometersFound < 1)
{
listBox1.Items.Add("No spectrometers found");
spectrometerIndex = -1; // set it to an invalid value
return;
}
spectrometerIndex = 0; // arbitrarily choose the first
// spectrometer for this demo
listBox1.Items.Add("Selecting spectrometer: " +
wrapper.getName(spectrometerIndex));
}
private void button2_Click(object sender, EventArgs e)
{
StreamReader sr = new StreamReader(@"C:\Program Files\Wolfram Research\Mathematicanew\12.0\SystemFiles\Links\NETLink\Examples\Part1\MathKernelApp\JointApps\rd.csv");
string line;
if (sr != null) sr.Close();
//end of graph
int numberOfPixels; // number of CCD elements/pixels provided by the spectrometer
double[] spectrum;
if (spectrometerIndex == -1)
return; // no available spectrometer
numberOfPixels = wrapper.getNumberOfPixels(spectrometerIndex);
// Set some acquisition parameters and then acquire a spectrum
spectrum = (double[])wrapper.getSpectrum(spectrometerIndex);
// Display the raw pixel values of this spectrum
var csv = new StringBuilder();
string[] lines = System.IO.File.ReadAllLines(@"C:\Users\Imprint KGT\Documents\Visual Studio 2012\editingg for lamda\WindowsFormsApplication1\wn.txt");
for (int i = 0; i < numberOfPixels; ++i)
{
double[] array = new double[1044];
var first = spectrum[i].ToString();
var newLine = string.Format("{0},{1}",lines[i], first);
csv.AppendLine(newLine);
}
File.WriteAllText((@"C:\Program Files\Wolfram Research\Mathematicanew\12.0\SystemFiles\qwer.csv"), csv.ToString());
for (int index = 0; index < numberOfPixels; ++index)
{
listBox2.Items.Add("Raman Shift[" + lines[index] + "] = " +
spectrum[index]);
double qw = spectrum[1];
}
}
private async void Button4_Click(object sender, System.EventArgs e)
{
statusStrip1.Text = "calling mathematica.......detecting pesticide presence.....";
if (mathKernel.IsComputing) { mathKernel.Abort(); }
else
{
try
{
mathKernel.Compute("linkName = \"Bob\"");
mathKernel.Compute("remoteLinkObj = LinkOpen[linkName, LinkMode -> Listen]");
mathKernel.Compute("Needs[\"JLink`\"]");
mathKernel.Compute("$FrontEndLaunchCommand = \"C:\\Program Files\\Wolfram Research\\Mathematicanew\\12.0\\Mathematica.exe\"");
mathKernel.Compute("UseFrontEnd[nb = CreateDocument[Null, Visible -> False]; NotebookWrite[nb, Cell[BoxData[{RowBox[{RowBox[{\"linkName\", \"=\", \"\\\"Bob\\\"\"}], \";\"}], \" \", RowBox[{RowBox[{\"feLinkObject\", \"=\", RowBox[{\"LinkOpen\", \"[\", RowBox[{\"linkName\", \",\", RowBox[{\"LinkMode\", \"\\[Rule]\", \"Connect\"}]}], \"]\"}]}], \";\"}], \" \", RowBox[{RowBox[{\"SetAttributes\", \"[\", RowBox[{\"remoteEval\", \",\", \"HoldRest\"}], \"]\"}], \";\"}], \" \", RowBox[{RowBox[{RowBox[{\"remoteEval\", \"[\", RowBox[{\"link_LinkObject\", \",\", \"expr_\"}], \"]\"}], \":=\", RowBox[{\"(\", RowBox[{RowBox[{\"LinkWrite\", \"[\", RowBox[{\"link\", \",\", RowBox[{\"Unevaluated\", \"[\", \"expr\", \"]\"}]}], \"]\"}], \";\", RowBox[{\"LinkRead\", \"[\", \"link\", \"]\"}]}], \")\"}]}], \";\"}]}], \"Input\"]]; SelectionMove[nb, Previous, Cell]; SelectionEvaluate[nb]; NotebookClose[nb]]");
mathKernel.Compute("NotebookEvaluate[\"greenchillicode.nb\"]");
string a = mathKernel.Result.ToString();
//la
textBox1.Text = a;
mathKernel.Compute("evalLoop[link_LinkObject] := Module[{resultOfEval, exprIn, exprOut, evalMessages}, evalMessages = {}; collectMessages[m_] := AppendTo[evalMessages, m]; Internal`AddHandler[\"Message\", collectMessages]; While[True, evalMessages = {}; exprIn = LinkRead[link, Hold]; resultOfEval = Check[exprOut = ReleaseHold[exprIn], $Failed]; Which[resultOfEval === $Failed, LinkWrite[link, EvalError[\"In\" -> exprIn, \"Out\" -> exprOut, \"Messages\" -> evalMessages]], True, LinkWrite[link, exprOut]]]; Internal`RemoveHandler[\"Message\", collectMessages]; LinkWrite[link, \"Evaluation loop is off\"]]");
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
}
private void Show(System.Drawing.Image image)
{
throw new System.NotImplementedException();
}
private void button3_Click(object sender, EventArgs e)
{
this.Close();
}
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.SuspendLayout();
//
// Form1
//
this.ClientSize = new System.Drawing.Size(1378, 744);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "Form1";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "23april";
this.ResumeLayout(false);
}
}
}