public override int WriteMessages(List <KeplerCommand> Messages) { List <KeplerCommand> FormattedMessages = new List <KeplerCommand>(); foreach (var Message in Messages) { var NewMessage = new byte[18]; var MessageIndex = 0; NewMessage[MessageIndex++] = 0x02; NewMessage[MessageIndex++] = 0x00; NewMessage[MessageIndex++] = 0x0F; NewMessage[MessageIndex++] = 0xA1; NewMessage[MessageIndex++] = 0x00; NewMessage[MessageIndex++] = 0x00; Message.Message.CopyTo(NewMessage, MessageIndex); var FormattedCommand = new KeplerCommand() { Message = NewMessage }; FormattedMessages.Add(FormattedCommand); if (base.isLoopbackEnabled) { Message.ProtocolID = (ulong)ProtocolID; Message.ExtraDataIndex = Message.DataSize; Message.RxStatus |= 0x01; base.Loopback(Message); } //Array.Copy(Message.Message, 0, NewMessage, MessageIndex, 12); } return(base.WriteMessages(FormattedMessages)); }
public override int WriteMessages(List <KeplerCommand> Messages) { List <KeplerCommand> FormattedMessages = new List <KeplerCommand>(); //Loop through Messages and add kepler header for VPW to each foreach (var Message in Messages) { var NewMessage = new byte[Message.Message.Length + 4]; NewMessage[0] = 0x02; NewMessage[1] = (byte)(((Message.Message.Length + 1) & 0xFF00) >> 8); NewMessage[2] = (byte)((Message.Message.Length + 1) & 0x00FF); NewMessage[3] = 0xA1; Message.Message.CopyTo(NewMessage, 4); var FormattedCommand = new KeplerCommand() { Message = NewMessage }; FormattedMessages.Add(FormattedCommand); if (base.isLoopbackEnabled) { Message.ProtocolID = (ulong)ProtocolID; Message.RxStatus |= 0x01; base.Loopback(Message); } } return(base.WriteMessages(FormattedMessages)); }
/// <summary> /// Creates a periodic message /// </summary> /// <param name="Messages">Message to send periodically</param> /// <param name="Protocol">Protocol to use to send message</param> /// <param name="TimeInterval">Time between messages</param> /// <returns>Message ID</returns> public int StartPeriodicMessage(KeplerCommand Messages, IProtocol Protocol, double TimeInterval) { var PeriodicMessageID = PeriodicMessages.Count + 1; var PeriodicMesssage = new PeriodicMessage(Messages, Protocol, TimeInterval); PeriodicMessages.Add(PeriodicMessageID, PeriodicMesssage); return(PeriodicMessageID); }
public override int WriteMessages(List <KeplerCommand> Messages) { List <KeplerCommand> FormattedMessages = new List <KeplerCommand>(); foreach (var Message in Messages) { var NewMessage = new byte[Message.Message.Length + 3]; var MessageIndex = 0; NewMessage[MessageIndex++] = 0x02; NewMessage[MessageIndex++] = (byte)((NewMessage.Length - 3 & 0xFF00) >> 8); NewMessage[MessageIndex++] = (byte)((NewMessage.Length - 3 & 0x00FF)); var FormattedCommand = new KeplerCommand() { Message = NewMessage }; FormattedMessages.Add(FormattedCommand); } return(base.WriteMessages(FormattedMessages)); }
internal void ErrorRecieved(KeplerCommand Message) { OnInterfaceErrorReceieved(this, new InterfaceErrorEventArgs(Message)); }
/// <summary> /// Shuts down all periodic messages /// </summary> public int StartPeriodicMessage(KeplerCommand Messages, IProtocol Channel, double TimeInterval) { return(PeriodicHandler.StartPeriodicMessage(Messages, Channel, TimeInterval)); }
/// <summary> /// Loopsback a message to the RX queue. /// </summary> /// <param name="LoopbackMessage">Message to loopback</param> public void Loopback(KeplerCommand LoopbackMessage) { ReceiverQueue.Enqueue(LoopbackMessage); }
public override int WriteMessages(List <KeplerCommand> Messages) { List <KeplerCommand> FormattedMessages = new List <KeplerCommand>(); foreach (var Message in Messages) { //TX FRAME CONFIRMATION var TxConfirmation = new KeplerCommand(); TxConfirmation.ExtraDataIndex = 0; TxConfirmation.ProtocolID = (ulong)this.ProtocolID; var NewMessage = new byte[Message.Message.Length + 6]; var MessageIndex = 0; NewMessage[MessageIndex++] = 0x02; NewMessage[MessageIndex++] = (byte)((NewMessage.Length - 3 & 0xFF00) >> 8); NewMessage[MessageIndex++] = (byte)((NewMessage.Length - 3 & 0x00FF)); NewMessage[MessageIndex++] = 0xA1; //ISO15765 Message NewMessage[MessageIndex++] = 0x01; //ISO15765 Addr Type if ((Message.TxFlags & 0x80) >> 7 == 0x01) { NewMessage[MessageIndex++] = 1; //Copy the extended address byte NewMessage[MessageIndex++] = Message.Message[4]; //Copy the CAN address (First four bytes of message from user application) Array.Copy(Message.Message, 0, NewMessage, MessageIndex, 4); //Copy the rest of the message data Array.Copy(Message.Message, 5, NewMessage, MessageIndex + 4, Message.Message.Length - 5); TxConfirmation.Message = new byte[5]; TxConfirmation.DataSize = 5; Array.Copy(Message.Message, 0, TxConfirmation.Message, 0, 5); TxConfirmation.RxStatus |= 0x89; } else { NewMessage[MessageIndex++] = 0; Array.Copy(Message.Message, 0, NewMessage, MessageIndex, Message.Message.Length); TxConfirmation.Message = new byte[4]; TxConfirmation.DataSize = 4; Array.Copy(Message.Message, 0, TxConfirmation.Message, 0, 4); TxConfirmation.RxStatus |= 9; } var FormattedCommand = new KeplerCommand() { Message = NewMessage }; FormattedMessages.Add(FormattedCommand); base.Loopback(TxConfirmation); //LOOPBACK if (base.isLoopbackEnabled) { Message.ProtocolID = (ulong)ProtocolID; Message.RxStatus |= 0x01; base.Loopback(Message); } } return(base.WriteMessages(FormattedMessages)); }