diff --git a/Matomat/Automat.cs b/Matomat/Automat.cs index 61acad8..efa0aa8 100644 --- a/Matomat/Automat.cs +++ b/Matomat/Automat.cs @@ -32,6 +32,13 @@ namespace Matomat prod = this.findProd(prodid.id); if(!prod.vaild()) return; + this.showProdInfo(prod); + if (prod.GetProdType() == Prod.ProdType.product) + { + this.sell(prod, user); + } + + } else if (input.type == InputData.types.Prod) { @@ -42,22 +49,51 @@ namespace Matomat } } - private void showProdInfo(Prod prod) + private void sell(Prod prod, User user) { throw new NotImplementedException(); } - private Prod findProd(int p) + private void showProdInfo(Prod prod) { - throw new NotImplementedException(); + if (prod.GetProdType() == Prod.ProdType.product) + { + long id = prod.GetProdId(); + double price = prod.GetProdPrice(); + string name = prod.GetProdName(); + this.lcd.print("²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²" + + "² Produkt: " + name.PadRight(27, ' ') + " ²" + + "² Preis: " + price.ToString(2).PadLeft(6, ' ') + "€ EAN13: " + id.ToString().PadRight(14, ' ') + " ²" + + "²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²", 5); + } + if (prod.GetProdType() == Prod.ProdType.instruction) + { + string name = prod.GetFunctName(); + this.lcd.print("²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²" + + "² Instruktion: " + name.PadRight(23, ' ') + " ²" + + "² AdminCard + Instruction + TargetCard ²" + + "²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²", 5); + } + } + + private Prod findProd(long prodid) + { + return new Prod(prodid); } private void showUserInfo(User user) { - lcd.print("User x",5); + string name = user.GetUserName(); + int konto = user.GetUserKonto(); + long id = user.GetUserId(); + int all = user.GetUserAll(); + lcd.print("²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²" + + "² User: " + name.PadRight(8, ' ') + " Betrag: " + (konto.ToString() + " €").PadRight(7, ' ') + " ²" + + "² UserID: " + id.ToString().PadRight(12, ' ') + " Gesamt: " + (all.ToString() + " €").PadRight(7, ' ') + " ²" + + "²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²", 5); } - private User findUser(int userId) + private User findUser(long userId) { return new User(userId); } diff --git a/Matomat/BarcodeReader.cs b/Matomat/BarcodeReader.cs index f3a75cd..b85a97c 100644 --- a/Matomat/BarcodeReader.cs +++ b/Matomat/BarcodeReader.cs @@ -9,8 +9,7 @@ namespace Matomat { internal long getCodeID() { - Console.ReadKey(); - return 1234567890123; + return 4029764001807; } } } diff --git a/Matomat/Helper.cs b/Matomat/Helper.cs index a520730..fffc7d4 100644 --- a/Matomat/Helper.cs +++ b/Matomat/Helper.cs @@ -51,5 +51,12 @@ namespace Matomat return b.Substring(start, b.Length); } } + public static class Double + { + public static string ToString(this double d, int f) + { + return "1.00"; + } + } } diff --git a/Matomat/Input.cs b/Matomat/Input.cs index 8bfc220..2ec9128 100644 --- a/Matomat/Input.cs +++ b/Matomat/Input.cs @@ -20,7 +20,7 @@ namespace Matomat None } public types type { get; set; } - public int id { get; set; } + public long id { get; set; } } class Input { @@ -40,17 +40,23 @@ namespace Matomat static List instances; private InputData data; private RFIDReader rfid; + private BarcodeReader code; public Input() { rfid = new RFIDReader(); + code = new BarcodeReader(); } private void doWorkCard() { while (true) { Thread.Sleep(1); - data.id = rfid.getCardID(); - data.type = InputData.types.Card; + char k = 'r'; + if (k == 'r') + { + data.id = rfid.getCardID(); + data.type = InputData.types.Card; + } } } @@ -59,6 +65,13 @@ namespace Matomat while (true) { Thread.Sleep(1); + char k = Console.ReadKey(false).KeyChar; + Console.WriteLine(); + if (k == 'b') + { + data.id = code.getCodeID(); + data.type = InputData.types.Prod; + } } } internal InputData getAnyInput(int timeout) diff --git a/Matomat/LCDDisplay.cs b/Matomat/LCDDisplay.cs index 4bb4ee9..f0b3508 100644 --- a/Matomat/LCDDisplay.cs +++ b/Matomat/LCDDisplay.cs @@ -55,11 +55,19 @@ namespace Matomat private Queue messages; private volatile bool _shouldStop; private SerialPort serialPort; + private bool disable = false; public LCDDisplay(Comport port) { this.serialPort = new SerialPort(port.port, port.bautrate, port.parity, port.databits, port.stopbits); - this.serialPort.Open(); + try + { + this.serialPort.Open(); + } + catch (Exception) + { + this.disable = true; + } messages = new Queue(); Thread workerThread = new Thread(this.DoWork); workerThread.Start(); @@ -87,9 +95,18 @@ namespace Matomat private void display(string text, Status status) { + if (status == Status.Warn) + { + Console.Beep(); + } + if (status == Status.Error) + { + Console.Beep(); + Console.Beep(); + } Console.WriteLine(text); this.displayClear(); - byte[] btext = text.ToCharArray("ÄÖÜäöüß²", new byte[] { 0xE1, 0xEF, 0xF5, 0xE1, 0xEF, 0xF5, 0xE2, 0xFF }); + byte[] btext = text.ToCharArray("ÄÖÜäöüß²€", new byte[] { 0xE1, 0xEF, 0xF5, 0xE1, 0xEF, 0xF5, 0xE2, 0xFF, 0xFF}); byte[] upper; byte[] lower; if (text.Length > 80) @@ -119,13 +136,19 @@ namespace Matomat private void displayCode(byte[] p) { - this.serialPort.Write(p, 0, p.Length); + if (!disable) + { + this.serialPort.Write(p, 0, p.Length); + } } private void displayEscCode(string code) { this.displayCode(new byte[] { 0x1b }); - this.serialPort.Write(code); + if (!disable) + { + this.serialPort.Write(code); + } this.displayCode(new byte[] { 0x0d }); } public enum Status diff --git a/Matomat/Prod.cs b/Matomat/Prod.cs index 72c2d14..311d5fb 100644 --- a/Matomat/Prod.cs +++ b/Matomat/Prod.cs @@ -7,9 +7,65 @@ namespace Matomat { class Prod { + private long prodId; + private bool found; + private ProdType type; + public enum ProdType + { + product, + instruction + } + + public Prod(long prodId) + { + this.prodId = prodId; + this.load(); + } + + private void load() + { + if (true) + this.found = true; + this.type = ProdType.instruction; + } + internal bool vaild() { - throw new NotImplementedException(); + LCDDisplay lcd = Factory.getLCDDisplay(); + if (!found) + { + lcd.print("²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²"+ + "² Produkt wurde nich gefunden ²"+ + "² EAN13: "+(this.GetProdId().ToString()+" unbekannt").PadRight(29,' ')+" ²"+ + "²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²", LCDDisplay.Status.Error, 5); + return false; + } + return true; + } + + internal ProdType GetProdType() + { + return this.type; + } + + internal long GetProdId() + { + return this.prodId; + } + + internal double GetProdPrice() + { + return 1.0; + } + + internal string GetProdName() + { + return "Mate-Cola"; + } + + internal string GetFunctName() + { + return "aufladen(10);"; } } } diff --git a/Matomat/RFIDReader.cs b/Matomat/RFIDReader.cs index a6deb60..f3d413e 100644 --- a/Matomat/RFIDReader.cs +++ b/Matomat/RFIDReader.cs @@ -7,10 +7,9 @@ namespace Matomat { class RFIDReader { - internal int getCardID() + internal long getCardID() { - Console.ReadKey(); - return 0x1234; + return 0xFFFFFFFF; } } } diff --git a/Matomat/User.cs b/Matomat/User.cs index 9a32600..32f7e2b 100644 --- a/Matomat/User.cs +++ b/Matomat/User.cs @@ -7,10 +7,10 @@ namespace Matomat { class User { - private int userId; + private long userId; private bool found; - public User(int userId) + public User(long userId) { // TODO: Complete member initialization this.userId = userId; @@ -34,5 +34,25 @@ namespace Matomat return true; } + + internal string GetUserName() + { + return "pschel2s"; + } + + internal int GetUserKonto() + { + return 15; + } + + internal long GetUserId() + { + return this.userId; + } + + internal int GetUserAll() + { + return 35; + } } }