public MainViewModel() { uiDispatcher = Dispatcher.CurrentDispatcher; Robots = new ObservableCollection <NXTViewModel>(); NXT.RobotAdded += new NXT.AvailableRobotsChangedEventHandler(NXT_RobotAdded); NXT.FindNXTDevices(); }
public NXTViewModel(NXT robot) { this.robot = robot; robot.PropertyChanged += new PropertyChangedEventHandler(robot_PropertyChanged); robot.Disconnected += new NXT.AvailableRobotsChangedEventHandler(robot_Disconnected); robot.Reconnected += new NXT.AvailableRobotsChangedEventHandler(robot_Reconnected); connected = false; }
public void GetUltrasonicValue(NXTInputPort inputPort) { currentPort = inputPort; NXT.GetUltrasonicValue(inputPort, 0); }
private void ClientThread() { byte[] message = null; int bytesRead; Command command = null; Reply reply = null; logQueue.AddToQueue("Client " + ID + ": Connected from " + address); IsConnected = true; bool run = true; while (run) { bytesRead = 0; message = new byte[4096]; try { bytesRead = networkStream.Read(message, 0, 4096); if (bytesRead > 0) { bool CommandValid = true; Array.Resize <byte>(ref message, bytesRead); try{ for (int i = 0; i < bytesRead; i++) { logQueue.AddToQueue("Commandbyte[" + i + "]=0x" + message[i].ToString("X")); } command = new Command(message); } catch (Exception) { CommandValid = false; logQueue.AddToQueue("Client " + ID + ": Invalid command is ignored"); } if (CommandValid) { reply = null; mutex.WaitOne(); try{ if (command.ReplyRequired) { logQueue.AddToQueue("Client " + ID + ": Forward ".PadRight(12) + command.CommandByte.ToString() + " with reply to NXT"); } else { logQueue.AddToQueue("Client " + ID + ": Forward ".PadRight(12) + command.CommandByte.ToString() + " without reply to NXT"); } NXT.Send(command); if (command.ReplyRequired) { reply = NXT.Receive(); networkStream.Write(reply.Data, 0, reply.Data.Length); logQueue.AddToQueue("Client " + ID + ": Received ".PadRight(12) + reply.CommandByte.ToString() + " from NXT"); } } catch (Exception e) { if (e is NXTException) { if (e is ConnectionException) { logQueue.AddToQueue("Client " + ID + ": " + e.Message); logQueue.AddToQueue("Closing connection with NXT"); NXT.Disconnect(); run = false; } else { logQueue.AddToQueue("Client " + ID + ": " + e.Message); if (reply == null) //try to send the message { reply = new Reply(CommandType.ReplyCommand, command.CommandByte, ((NXTException)e).ErrorCode); networkStream.Write(reply.Data, 0, reply.Data.Length); } } } else { logQueue.AddToQueue("Client " + ID + ": " + e.Message); logQueue.AddToQueue("Client " + ID + ": " + e.StackTrace); run = false; } } mutex.ReleaseMutex(); } } else { run = false; } } catch (Exception e) { if (!wasThrownOff) { logQueue.AddToQueue("Client " + ID + ": Error occurred: " + e.Message); } break; } } try{ networkStream.Close(); } catch {} logQueue.AddToQueue("Client " + ID + ": Disconnected"); if (onDisconnected != null) { onDisconnected(this); } IsConnected = false; }
protected override void ProcessRecord() { this.SetOptions(); this.SetScope(Server); this.SetManagementPath(Identity); ManagementObject wmiRecord = this.Get(); WmiRecordClass WmiRecordClassName = (WmiRecordClass)Enum.Parse(typeof(WmiRecordClass), (String)wmiRecord.Properties["__CLASS"].Value); String NewPath = String.Empty; #region Parameter Set validation Boolean Terminate = false; switch (ParameterSetName) { case "PS0": break; case "PS1": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_AType & WmiRecordClassName != WmiRecordClass.MicrosoftDNS_AAAAType & WmiRecordClassName != WmiRecordClass.MicrosoftDNS_WKSType) { Terminate = true; } break; case "PS2": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_CNAMEType & WmiRecordClassName != WmiRecordClass.MicrosoftDNS_MBType & WmiRecordClassName != WmiRecordClass.MicrosoftDNS_MDType & WmiRecordClassName != WmiRecordClass.MicrosoftDNS_MFType & WmiRecordClassName != WmiRecordClass.MicrosoftDNS_NSType & WmiRecordClassName != WmiRecordClass.MicrosoftDNS_PTRType) { Terminate = true; } break; case "PS3": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_MGType & WmiRecordClassName != WmiRecordClass.MicrosoftDNS_MRType) { Terminate = true; } break; case "PS4": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_TXTType) { Terminate = true; } break; case "PS5": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_HINFOType) { Terminate = true; } break; case "PS6": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_ISDNType) { Terminate = true; } break; case "PS7": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_MINFOType) { Terminate = true; } break; case "PS8": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_NXTType) { Terminate = true; } break; case "PS9": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_RPType) { Terminate = true; } break; case "PS10": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_AFSDBType) { Terminate = true; } break; case "PS11": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_MXType & WmiRecordClassName != WmiRecordClass.MicrosoftDNS_RTType) { Terminate = true; } break; case "PS12": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_X25Type) { Terminate = true; } break; case "PS13": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_SOAType) { Terminate = true; } break; case "PS14": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_SRVType) { Terminate = true; } break; case "PS15": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_WINSType) { Terminate = true; } break; case "PS16": if (WmiRecordClassName != WmiRecordClass.MicrosoftDNS_WINSRType) { Terminate = true; } break; } if (Terminate) { ThrowTerminatingError( new ErrorRecord( new PSInvalidOperationException("InvalidParameterSetForRecordType"), "InvalidOperation", ErrorCategory.InvalidOperation, typeof(ManagementCmdlet))); } #endregion if (ShouldProcess((String)wmiRecord.Properties["TextRepresentation"].Value)) { switch (WmiRecordClassName) { case WmiRecordClass.MicrosoftDNS_AType: A ARecord = new A(wmiRecord, Server); NewPath = ARecord.Modify(TTL, Address.ToString()); break; case WmiRecordClass.MicrosoftDNS_AAAAType: AAAA AAAARecord = new AAAA(wmiRecord, Server); NewPath = AAAARecord.Modify(TTL, Address.ToString()); break; case WmiRecordClass.MicrosoftDNS_AFSDBType: AFSDB AFSDBRecord = new AFSDB(wmiRecord, Server); NewPath = AFSDBRecord.Modify(TTL, SubType, TargetName); break; case WmiRecordClass.MicrosoftDNS_CNAMEType: CNAME CNAMERecord = new CNAME(wmiRecord, Server); NewPath = CNAMERecord.Modify(TTL, Hostname); break; case WmiRecordClass.MicrosoftDNS_HINFOType: HINFO HINFORecord = new HINFO(wmiRecord, Server); NewPath = HINFORecord.Modify(TTL, CPU, OS); break; case WmiRecordClass.MicrosoftDNS_ISDNType: ISDN ISDNRecord = new ISDN(wmiRecord, Server); NewPath = ISDNRecord.Modify(TTL, ISDNNumber, SubAddress); break; case WmiRecordClass.MicrosoftDNS_MBType: MB MBRecord = new MB(wmiRecord, Server); NewPath = MBRecord.Modify(TTL, Hostname); break; case WmiRecordClass.MicrosoftDNS_MDType: MD MDRecord = new MD(wmiRecord, Server); NewPath = MDRecord.Modify(TTL, Hostname); break; case WmiRecordClass.MicrosoftDNS_MFType: MF MFRecord = new MF(wmiRecord, Server); NewPath = MFRecord.Modify(TTL, Hostname); break; case WmiRecordClass.MicrosoftDNS_MGType: MG MGRecord = new MG(wmiRecord, Server); NewPath = MGRecord.Modify(TTL, MailboxName); break; case WmiRecordClass.MicrosoftDNS_MINFOType: MINFO MINFORecord = new MINFO(wmiRecord, Server); NewPath = MINFORecord.Modify(TTL, ResponsibleMailbox, ErrorMailbox); break; case WmiRecordClass.MicrosoftDNS_MRType: MR MRRecord = new MR(wmiRecord, Server); NewPath = MRRecord.Modify(TTL, MailboxName); break; case WmiRecordClass.MicrosoftDNS_MXType: MX MXRecord = new MX(wmiRecord, Server); NewPath = MXRecord.Modify(TTL, Preference, TargetName); break; case WmiRecordClass.MicrosoftDNS_NSType: NS NSRecord = new NS(wmiRecord, Server); NewPath = NSRecord.Modify(TTL, Hostname); break; case WmiRecordClass.MicrosoftDNS_NXTType: NXT NXTRecord = new NXT(wmiRecord, Server); NewPath = NXTRecord.Modify(TTL, NextDomainName, Types); break; case WmiRecordClass.MicrosoftDNS_PTRType: PTR PTRRecord = new PTR(wmiRecord, Server); NewPath = PTRRecord.Modify(TTL, Hostname); break; case WmiRecordClass.MicrosoftDNS_RPType: RP RPRecord = new RP(wmiRecord, Server); NewPath = RPRecord.Modify(TTL, ResponsibleMailbox, TXTDomainName); break; case WmiRecordClass.MicrosoftDNS_RTType: RT RTRecord = new RT(wmiRecord, Server); NewPath = RTRecord.Modify(TTL, Preference, TargetName); break; case WmiRecordClass.MicrosoftDNS_SOAType: SOA SOARecord = new SOA(wmiRecord, Server); NewPath = SOARecord.Modify(TTL, SerialNumber, SOAServer, ResponsibleMailbox, RefreshInterval, RetryDelay, ExpireLimit, MinimumTTL); break; case WmiRecordClass.MicrosoftDNS_SRVType: SRV SRVRecord = new SRV(wmiRecord, Server); NewPath = SRVRecord.Modify(TTL, Priority, Weight, Port, TargetName); break; case WmiRecordClass.MicrosoftDNS_TXTType: TXT TXTRecord = new TXT(wmiRecord, Server); NewPath = TXTRecord.Modify(TTL, Text); break; case WmiRecordClass.MicrosoftDNS_WINSType: WINS WINSRecord = new WINS(wmiRecord, Server); NewPath = WINSRecord.Modify(TTL, MappingFlag, LookupTimeout, CacheTimeout, String.Join(" ", WinsServers)); break; case WmiRecordClass.MicrosoftDNS_WINSRType: WINSR WINSRRecord = new WINSR(wmiRecord, Server); NewPath = WINSRRecord.Modify(TTL, MappingFlag, LookupTimeout, CacheTimeout, ResultDomain); break; case WmiRecordClass.MicrosoftDNS_WKSType: WKS WKSRecord = new WKS(wmiRecord, Server); NewPath = WKSRecord.Modify(Address, TTL, IPProtocol, String.Join(" ", Services)); break; case WmiRecordClass.MicrosoftDNS_X25Type: X25 X25Record = new X25(wmiRecord, Server); NewPath = X25Record.Modify(TTL, PSDNAddress); break; default: ThrowTerminatingError( new ErrorRecord( new PSNotSupportedException("Unsupported Record Type"), "RecordModificationNotSupported", ErrorCategory.NotImplemented, typeof(ManagementCmdlet))); break; } if (PassThru) { this.SetManagementPath(NewPath); wmiRecord = this.Get(); WriteRecord(wmiRecord); } } }
public NXTRobot(NXT robot) { Name = robot.Name; ID = robot.ID; }