Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // main
- {
- ..
- motor1.ORDER_move()
- ..
- }
- class Motor()
- {
- ..
- public void ORDER_move()
- {
- byte[] cmd = ...;
- BackgroundWorker worker = new BackgroundWorker();
- worker.DoWork += worker_DoWork;
- worker.RunWorkerAsync((object)cmd);
- }
- private void worker_DoWork(object sender, DoWorkEventArgs e)
- {
- lock(queue_lock)
- {
- C_SPI.AppendDataToQueue(e.Argument as byte[]);
- }
- lock(spi_lock)
- {
- C_SPI.WriteDataFromQueue();
- }
- }
- }
- class C_SPI()
- {
- // schematicky definice
- private queue cmd_que; // fifo fronta
- private serialport spi;
- object queue_lock;
- object spi_lock;
- public void AppendDataToQueue(byte[] cmd)
- {
- lock (queue_lock)
- {
- queue.append(cmd);
- }
- }
- public void WriteDataFromQueue()
- {
- lock (spi_locker)
- {
- spi.write(queue.getLast);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement