Beispiel #1
0
 private ArduinoDao()
 {
     //TODO: move to App
     //return;
     Task.Run(() => {
         while (true)
         {
             try {
                 if (flag)
                 {
                     ArduinoDriver[] copy = new ArduinoDriver[viewList.Count];
                     Instance.viewList.CopyTo(copy, 0);
                     foreach (ArduinoDriver driver in copy)
                     {
                         if (null != driver && !driver.isDisposed)
                         {
                             if (0 < driver.stream.BytesToRead)
                             {
                                 driver.read();
                             }
                             Message msg = null;
                             driver.readQueue.TryDequeue(out msg);
                             if (null != msg)
                             {
                                 msg.Driver = driver.ToString();
                                 MainWindow.dispatcher.InvokeAsync(() => {
                                     if (0 < MainWindow.instance.clusterList.Count)
                                     {
                                         msg.BrushBack = (from cluster in MainWindow.instance.clusterList
                                                          where cluster.ID == msg[Message.Field.clusterID]
                                                          select cluster.Brush).FirstOrDefault();
                                         msg.BrushFore = new SolidColorBrush(Color.FromArgb(0xFF, 0xFF, 0xFF, 0xFF));
                                     }
                                     inBoundList.Insert(0, msg);
                                 });
                             }
                         }
                     }
                 }
             }
             catch {
             }
         }
     });
 }
Beispiel #2
0
        static void Main(string[] args)
        {
            Message msg = new Message();

            msg[Field.from]          = 0x5;
            msg[Field.to]            = 0xD;
            msg[Field.broadcastType] = (UInt32)BroadcastType.control;
            msg[Field.senderType]    = (UInt32)SenderType.soldier;
            msg[Field.messageData]   = (UInt32)MessageData.stopFire;
            Console.WriteLine(msg);
            byte[]        bytes  = new byte[sizeof(UInt32)];
            ArduinoDriver driver = new ArduinoDriver("COM5");

            driver.synchronize();
            do
            {
                while (0 >= driver.stream.BytesToRead)
                {
                    ;
                }
                driver.read();
                Message msg1 = null;
                driver.readQueue.TryDequeue(out msg1);
                Console.WriteLine(msg);
            } while (true);
            return;

            ArduinoDao.Instance.scanDevices();
            foreach (ArduinoDriver ard in ArduinoDao.Instance.drivers.Values)
            {
                Console.WriteLine(ard);
            }
            ArduinoDao.Instance.Dispose();
            Console.WriteLine("waiting");
            Console.ReadKey();
            Message       test     = new Message(0xFE72);
            ArduinoDriver myDriver = new ArduinoDriver("COM5", 9600);

            if (myDriver.synchronize())
            {
                Console.WriteLine("sync succesfull");
            }
            while (true)
            {
                if (0 < myDriver.stream.BytesToRead)
                {
                    myDriver.stream.EndRead(myDriver.read(null, null));
                    myDriver.readQueue.TryDequeue(out test);
                    Console.WriteLine("{0:x}: {1} :{2}", test.MessageValue, test, test.MessageValue);
                }
                else if (Console.KeyAvailable)
                {
                    if (Console.ReadKey().Key == ConsoleKey.A)
                    {
                        Console.WriteLine("sending");
                        test = new Message(0x7F000);
                        //test[Message.Field.messageData] = (UInt32)Message.MessageData.retreat;
                        Console.WriteLine("{0:x}: {1} :{2}", test.MessageValue, test, test.MessageValue);
                        myDriver.writeQueue.Enqueue(test);
                        myDriver.write();
                    }
                    else if (Console.ReadKey().Key == ConsoleKey.Q)
                    {
                        break;
                    }
                }
            }
        }