Testconsole/Testconsole/Program.cs
2019-12-04 22:02:38 +01:00

62 lines
2.0 KiB
C#

using System;
namespace Testconsole {
class Program {
private Boolean RunningProcess = true;
private System.Threading.Thread sig_thread;
public static void Main() => new Program();
Program() {
Console.WriteLine("Start");
DispDriver a = new DispDriver("COM3");
for(Double i = 0; i < 1000; i = i + 0.5) {
a.DrawDigets(i.ToString().Replace(",", "."), 0x110000);
a.Write();
System.Threading.Thread.Sleep(200);
}
//a.DrawLineX(0, 0, 16, 0xFF0000);
//a.DrawLineY(0, 1, 2, 0x00FF00);
this.WaitForShutdown();
Console.WriteLine("Shutdown");
}
private void WaitForShutdown() {
this.sig_thread = new System.Threading.Thread(delegate () {
Console.WriteLine("Mono: Create thread");
Mono.Unix.UnixSignal[] signals = new Mono.Unix.UnixSignal[] {
new Mono.Unix.UnixSignal(Mono.Unix.Native.Signum.SIGTERM),
new Mono.Unix.UnixSignal(Mono.Unix.Native.Signum.SIGINT)
};
Console.WriteLine("Mono: Set Signals");
while (this.RunningProcess) {
Console.WriteLine("Mono: Wait for Signal");
Int32 i = Mono.Unix.UnixSignal.WaitAny(signals, -1);
Console.WriteLine("Mono: Signal Recieved: "+i);
this.RunningProcess = false;
}
});
if (Type.GetType("Mono.Runtime") != null) {
this.sig_thread.Start();
} else {
Console.CancelKeyPress += new ConsoleCancelEventHandler(this.SetupShutdown);
}
Console.WriteLine("Windows: Create Handler");
Console.WriteLine("Wait");
while (this.RunningProcess) {
System.Threading.Thread.Sleep(100);
}
Console.WriteLine("After Wait");
}
private void SetupShutdown(Object sender, ConsoleCancelEventArgs e) {
e.Cancel = true;
Console.WriteLine("Windows get Signal");
this.RunningProcess = false;
}
}
}