public void RunPubJob() { if (pubTimer.HasElapsed() >= 10) { if (zmqPubSocket != null) { StatusMessage statusMsg = new StatusMessage(); lock (pubLockObj) { foreach (KeyValuePair <int, float> x in encoderMap) { ValueMessage v = new ValueMessage { Id = x.Key, Value = x.Value }; statusMsg.Encoders.Add(v); } foreach (KeyValuePair <int, float> x in accelerometerMap) { ValueMessage v = new ValueMessage { Id = x.Key, Value = x.Value }; statusMsg.Accelerometers.Add(v); } foreach (KeyValuePair <int, float> x in gyroscopeMap) { ValueMessage v = new ValueMessage { Id = x.Key, Value = x.Value }; statusMsg.Gyroscopes.Add(v); } foreach (KeyValuePair <int, float> x in advancedMap) { ValueMessage v = new ValueMessage { Id = x.Key, Value = x.Value }; statusMsg.Advanced.Add(v); } } Console.WriteLine("Sending"); zmqPubSocket.Send(new ZFrame(statusMsg.ToByteArray())); } else { Interlocked.Increment(ref pubFailCount); if (pubFailCount >= 100) { ReInitPubSocket(); } } pubTimer.Start(); } }
public void RunRepJob() { if (repTimer.HasElapsed() >= 1) { if (zmqRepSocket != null) { using (ZFrame request = zmqRepSocket.ReceiveFrame(ZSocketFlags.DontWait, out ZError zErr)) { if (zErr == ZError.None && request.Length > 0) { try { byte[] b = request.Read(); ControlMessage cM = ControlMessage.Parser.ParseFrom(b); lock (repLockObj) { foreach (var motor in cM.Motors) { motorMap[motor.Id] = motor.Value; } } zmqRepSocket.Send(new ZFrame("A")); } catch { } } } } else { Interlocked.Increment(ref repFailCount); if (repFailCount >= 100) { ReInitRepSocket(); } } repTimer.Start(); } }