//------------------------------------------------------------------------- /** * Sends a 11 bit CAN data frame. * * @param message CAN message * * @return success (true/false) */ public override bool sendMessage(CANMessage a_message) { string sendString = "t"; sendString += a_message.getID().ToString("X3"); sendString += a_message.getLength().ToString("X1"); for (uint i = 0; i < a_message.getLength(); i++) // leave out the length field, the ELM chip assigns that for us { sendString += a_message.getCanData(i).ToString("X2"); } sendString += "\r"; if (m_serialPort.IsOpen) { //AddToCanTrace("TX: " + a_message.getID().ToString("X3") + " " + a_message.getLength().ToString("X1") + " " + a_message.getData().ToString("X16")); m_serialPort.Write(sendString); //Console.WriteLine("TX: " + sendString); } // bitrate = 38400bps -> 3840 bytes per second // sending each byte will take 0.2 ms approx //Thread.Sleep(a_message.getLength()); // sleep length ms // Thread.Sleep(10); Thread.Sleep(1); return(true); // remove after implementation }
//------------------------------------------------------------------------- /** * Sends a 11 bit CAN data frame. * * @param msg CAN message * * @return success (true/false) */ public override bool sendMessage(CANMessage msg) { if (this.logging_enabled) { this.DumpCanMsg(msg, true); } try { Combi.caCombiAdapter.caCANFrame frame; frame.id = msg.getID(); frame.length = msg.getLength(); frame.data = msg.getData(); frame.is_extended = 0; frame.is_remote = 0; this.combi.CAN_SendMessage(ref frame); return(true); } catch (Exception e) { return(false); } }
override public void handleMessage(CANMessage a_message) { bool messageReceived = false; lock (m_canMessage) { //Console.WriteLine("Received message in message handler"); if (a_message.getID() == m_waitMsgID) { m_canMessage = a_message; messageReceived = true; // CheckRxMsg(); } // if it is a A6 command we're downloading the flash content as fast as possible. // just signal that the bytes we're received else { // CheckRxMsg(); } } if (messageReceived) { // CheckRxMessage(); m_resetEvent.Set(); } }
//------------------------------------------------------------------------- /** * Writes a CAN message to log file. * * @param r_canMsg message * @param IsTransmit ??? */ private void DumpCanMsg(CANMessage r_canMsg, bool IsTransmit) { DateTime dt = DateTime.Now; try { using (StreamWriter sw = new StreamWriter(Path.Combine(this.startup_path, dt.Year.ToString("D4") + dt.Month.ToString("D2") + dt.Day.ToString("D2") + "-CanTrace.log"), true)) { if (IsTransmit) { // get the byte transmitted int transmitvalue = (int)(r_canMsg.getData() & 0x000000000000FF00); transmitvalue /= 256; sw.WriteLine(dt.ToString("dd/MM/yyyy HH:mm:ss") + " TX: id=" + r_canMsg.getID().ToString("D2") + " len= " + r_canMsg.getLength().ToString("X8") + " data=" + r_canMsg.getData().ToString("X16") + " " + r_canMsg.getFlags().ToString("X2") + " character = " + GetCharString(transmitvalue) + "\t ts: " + r_canMsg.getTimeStamp().ToString("X16") + " flags: " + r_canMsg.getFlags().ToString("X2")); } else { // get the byte received int receivevalue = (int)(r_canMsg.getData() & 0x0000000000FF0000); receivevalue /= (256 * 256); sw.WriteLine(dt.ToString("dd/MM/yyyy HH:mm:ss") + " RX: id=" + r_canMsg.getID().ToString("D2") + " len= " + r_canMsg.getLength().ToString("X8") + " data=" + r_canMsg.getData().ToString("X16") + " " + r_canMsg.getFlags().ToString("X2") + " character = " + GetCharString(receivevalue) + "\t ts: " + r_canMsg.getTimeStamp().ToString("X16") + " flags: " + r_canMsg.getFlags().ToString("X2")); } } } catch (Exception E) { Console.WriteLine("Failed to write to logfile: " + E.Message); } }
/// <summary> /// sendMessage send a CANMessage. /// </summary> /// <param name="a_message">A CANMessage.</param> /// <returns>true on success, othewise false.</returns> override public bool sendMessage(CANMessage a_message) { byte[] msg = a_message.getDataAsByteArray(); writeStatus = Canlib.canWrite(handleWrite, (int)a_message.getID(), msg, a_message.getLength(), 0); if (writeStatus == Canlib.canStatus.canOK) { return(true); } else { logger.Debug(String.Format("tx failed with status {0}", writeStatus)); return(false); } }
/// <summary> /// sendMessage send a CANMessage. /// </summary> /// <param name="a_message">A CANMessage.</param> /// <returns>true on success, othewise false.</returns> override public bool sendMessage(CANMessage a_message) { LAWICEL.CANMsg msg = new LAWICEL.CANMsg(); msg.id = a_message.getID(); msg.len = a_message.getLength(); msg.flags = a_message.getFlags(); msg.data = a_message.getData(); if (m_DoLogging) { DumpCanMsg(msg, true); } if (m_port.IsOpen) { m_port.Write("\r"); string txstring = "t"; txstring += msg.id.ToString("X3"); txstring += "8"; // always 8 bytes to transmit for (int t = 0; t < 8; t++) { byte b = (byte)(((msg.data >> t * 8) & 0x0000000000000000FF)); txstring += b.ToString("X2"); } txstring += "\r"; m_port.Write(txstring); // Console.WriteLine("Send: " + txstring); return(true); } return(false); /* * int writeResult; * writeResult = LAWICEL.canusb_Write(m_deviceHandle, ref msg); * if (writeResult == LAWICEL.ERROR_CANUSB_OK) * return true; * else * return false; */ }
/// <summary> /// sendMessage send a CANMessage. /// </summary> /// <param name="a_message">A CANMessage.</param> /// <returns>true on success, othewise false.</returns> override public bool sendMessage(CANMessage a_message) { LAWICEL.CANMsg msg = new LAWICEL.CANMsg(); msg.id = a_message.getID(); msg.len = a_message.getLength(); msg.flags = a_message.getFlags(); msg.data = a_message.getData(); if (m_DoLogging) { DumpCanMsg(msg, true); } int writeResult; writeResult = LAWICEL.canusb_Write(m_deviceHandle, ref msg); if (writeResult == LAWICEL.ERROR_CANUSB_OK) { return(true); } else { return(false); } }
//------------------------------------------------------------------------- /** Sends a 11 bit CAN data frame. @param message CAN message @return success (true/false) */ public override bool sendMessage(CANMessage a_message) { string sendString = "t"; sendString += a_message.getID().ToString("X3"); sendString += a_message.getLength().ToString("X1"); for (uint i = 0; i < a_message.getLength(); i++) // leave out the length field, the ELM chip assigns that for us { sendString += a_message.getCanData(i).ToString("X2"); } sendString += "\r"; if (m_serialPort.IsOpen) { //AddToCanTrace("TX: " + a_message.getID().ToString("X3") + " " + a_message.getLength().ToString("X1") + " " + a_message.getData().ToString("X16")); m_serialPort.Write(sendString); //Console.WriteLine("TX: " + sendString); } // bitrate = 38400bps -> 3840 bytes per second // sending each byte will take 0.2 ms approx //Thread.Sleep(a_message.getLength()); // sleep length ms // Thread.Sleep(10); Thread.Sleep(1); return true; // remove after implementation }
/// <summary> /// sendMessage send a CANMessage. /// </summary> /// <param name="a_message">A CANMessage.</param> /// <returns>true on success, othewise false.</returns> public override bool sendMessage(CANMessage a_message) { LAWICEL.CANMsg msg = new LAWICEL.CANMsg(); msg.id = a_message.getID(); msg.len = a_message.getLength(); msg.flags = a_message.getFlags(); msg.data = a_message.getData(); if (m_DoLogging) { DumpCanMsg(msg, true); } if (m_port.IsOpen) { m_port.Write("\r"); string txstring = "t"; txstring += msg.id.ToString("X3"); txstring += "8"; // always 8 bytes to transmit for (int t = 0; t < 8; t++) { byte b = (byte)(((msg.data >> t * 8) & 0x0000000000000000FF)); txstring += b.ToString("X2"); } txstring += "\r"; m_port.Write(txstring); // Console.WriteLine("Send: " + txstring); return true; } return false; /* int writeResult; writeResult = LAWICEL.canusb_Write(m_deviceHandle, ref msg); if (writeResult == LAWICEL.ERROR_CANUSB_OK) return true; else return false; */ }
/// <summary> /// sendMessage send a CANMessage. /// </summary> /// <param name="a_message">A CANMessage.</param> /// <returns>true on success, othewise false.</returns> public override bool sendMessage(CANMessage a_message) { LAWICEL.CANMsg msg = new LAWICEL.CANMsg(); msg.id = a_message.getID(); msg.len = a_message.getLength(); msg.flags = a_message.getFlags(); msg.data = a_message.getData(); if (m_DoLogging) { DumpCanMsg(msg, true); } int writeResult; writeResult = LAWICEL.canusb_Write(m_deviceHandle, ref msg); if (writeResult == LAWICEL.ERROR_CANUSB_OK) return true; else return false; }
//------------------------------------------------------------------------- /** * Sends a 11 bit CAN data frame. * * @param message CAN message * * @return success (true/false) */ public override bool sendMessage(CANMessage message) { return(MctAdapter_SendMessage(message.getID(), message.getLength(), message.getData())); }
private void DumpCanMsg(CANMessage canMsg, bool IsTransmit) { DateTime dt = DateTime.Now; try { using (StreamWriter sw = new StreamWriter(@"c:\" + dt.Year.ToString("D4") + dt.Month.ToString("D2") + dt.Day.ToString("D2") + "-CanTrace.log", true)) { if (IsTransmit) { // get the byte transmitted int transmitvalue = (int)(canMsg.getData() & 0x000000000000FF00); transmitvalue /= 256; sw.WriteLine(dt.ToString("dd/MM/yyyy HH:mm:ss") + " TX: id=" + canMsg.getID().ToString("X2") + " len= " + canMsg.getLength().ToString("X8") + " data=" + canMsg.getData().ToString("X16") + " " + canMsg.getFlags().ToString("X2") + "\t ts: " + canMsg.getTimeStamp().ToString("X16") + " flags: " + canMsg.getFlags().ToString("X2")); } else { // get the byte received int receivevalue = (int)(canMsg.getData() & 0x0000000000FF0000); receivevalue /= (256 * 256); sw.WriteLine(dt.ToString("dd/MM/yyyy HH:mm:ss") + " RX: id=" + canMsg.getID().ToString("X2") + " len= " + canMsg.getLength().ToString("X8") + " data=" + canMsg.getData().ToString("X16") + " " + canMsg.getFlags().ToString("X2") + "\t ts: " + canMsg.getTimeStamp().ToString("X16") + " flags: " + canMsg.getFlags().ToString("X2")); } } } catch (Exception E) { Console.WriteLine("Failed to write to logfile: " + E.Message); } }
/// <summary> /// sendMessage send a CANMessage. /// </summary> /// <param name="a_message">A CANMessage.</param> /// <returns>true on success, othewise false.</returns> override public bool sendMessage(CANMessage a_message) { EASYSYNC.CANMsg msg = new EASYSYNC.CANMsg(); msg.id = (ushort)a_message.getID(); msg.len = a_message.getLength(); msg.flags = a_message.getFlags(); ulong msgdata = a_message.getData(); // store in data (ulong) /*byte databyte = a_message.getCanData(7); * msg.data_1 = GetDataMSBADCII(databyte); * msg.data_2 = GetDataLSBADCII(databyte); * databyte = a_message.getCanData(6); * msg.data_3 = GetDataMSBADCII(databyte); * msg.data_4 = GetDataLSBADCII(databyte); * databyte = a_message.getCanData(5); * msg.data_5 = GetDataMSBADCII(databyte); * msg.data_6 = GetDataLSBADCII(databyte); * databyte = a_message.getCanData(4); * msg.data_7 = GetDataMSBADCII(databyte); * msg.data_8 = GetDataLSBADCII(databyte); * databyte = a_message.getCanData(3); * msg.data_9 = GetDataMSBADCII(databyte); * msg.data_10 = GetDataLSBADCII(databyte); * databyte = a_message.getCanData(2); * msg.data_11 = GetDataMSBADCII(databyte); * msg.data_12 = GetDataLSBADCII(databyte); * databyte = a_message.getCanData(1); * msg.data_13 = GetDataMSBADCII(databyte); * msg.data_14 = GetDataLSBADCII(databyte); * databyte = a_message.getCanData(0); * msg.data_15 = GetDataMSBADCII(databyte); * msg.data_16 = GetDataLSBADCII(databyte); */ msg.data = a_message.getData(); // this data should be in ascii: unsigned char data[16]; // Databytes 0...7 // example: /* * msg.data[0]='A'; * msg.data[1]='1'; * * msg.data[2]='B'; * msg.data[3]='2'; * * msg.data[4]='C'; * msg.data[5]='3'; * * msg.data[6]='D'; * msg.data[7]='4'; * * msg.data[8]='E'; * msg.data[9]='5'; * * msg.data[10]='F'; * msg.data[11]='6'; * * msg.data[12]='1'; * msg.data[13]='2'; * * msg.data[14]='3'; * msg.data[15]='4'; * */ if (m_DoLogging) { DumpCanMsg(msg, true); } int writeResult; Console.WriteLine("Writing to handle: " + m_deviceHandle.ToString("X8")); writeResult = EASYSYNC.canusb_Write(m_deviceHandle, ref msg); if (writeResult == EASYSYNC.ERROR_CANUSB_OK) { return(true); } else { //EASYSYNC.canusb_Flush(m_deviceHandle); Console.WriteLine("Failed to send message: " + writeResult.ToString("X8")); return(false); } }
/// <summary> /// sendMessage send a CANMessage. /// </summary> /// <param name="a_message">A CANMessage.</param> /// <returns>true on success, othewise false.</returns> public override bool sendMessage(CANMessage a_message) { EASYSYNC.CANMsg msg = new EASYSYNC.CANMsg(); msg.id = (ushort)a_message.getID(); msg.len = a_message.getLength(); msg.flags = a_message.getFlags(); ulong msgdata = a_message.getData(); // store in data (ulong) /*byte databyte = a_message.getCanData(7); msg.data_1 = GetDataMSBADCII(databyte); msg.data_2 = GetDataLSBADCII(databyte); databyte = a_message.getCanData(6); msg.data_3 = GetDataMSBADCII(databyte); msg.data_4 = GetDataLSBADCII(databyte); databyte = a_message.getCanData(5); msg.data_5 = GetDataMSBADCII(databyte); msg.data_6 = GetDataLSBADCII(databyte); databyte = a_message.getCanData(4); msg.data_7 = GetDataMSBADCII(databyte); msg.data_8 = GetDataLSBADCII(databyte); databyte = a_message.getCanData(3); msg.data_9 = GetDataMSBADCII(databyte); msg.data_10 = GetDataLSBADCII(databyte); databyte = a_message.getCanData(2); msg.data_11 = GetDataMSBADCII(databyte); msg.data_12 = GetDataLSBADCII(databyte); databyte = a_message.getCanData(1); msg.data_13 = GetDataMSBADCII(databyte); msg.data_14 = GetDataLSBADCII(databyte); databyte = a_message.getCanData(0); msg.data_15 = GetDataMSBADCII(databyte); msg.data_16 = GetDataLSBADCII(databyte); */ msg.data = a_message.getData(); // this data should be in ascii: unsigned char data[16]; // Databytes 0...7 // example: /* msg.data[0]='A'; msg.data[1]='1'; msg.data[2]='B'; msg.data[3]='2'; msg.data[4]='C'; msg.data[5]='3'; msg.data[6]='D'; msg.data[7]='4'; msg.data[8]='E'; msg.data[9]='5'; msg.data[10]='F'; msg.data[11]='6'; msg.data[12]='1'; msg.data[13]='2'; msg.data[14]='3'; msg.data[15]='4'; * */ if (m_DoLogging) { DumpCanMsg(msg, true); } int writeResult; Console.WriteLine("Writing to handle: " + m_deviceHandle.ToString("X8")); writeResult = EASYSYNC.canusb_Write(m_deviceHandle, ref msg); if (writeResult == EASYSYNC.ERROR_CANUSB_OK) return true; else { //EASYSYNC.canusb_Flush(m_deviceHandle); Console.WriteLine("Failed to send message: " + writeResult.ToString("X8")); return false; } }
//------------------------------------------------------------------------- /** Sends a 11 bit CAN data frame. @param msg CAN message @return success (true/false) */ public override bool sendMessage(CANMessage msg) { if (this.logging_enabled) { this.DumpCanMsg(msg, true); } try { Combi.caCombiAdapter.caCANFrame frame; frame.id = msg.getID(); frame.length = msg.getLength(); frame.data = msg.getData(); frame.is_extended = 0; frame.is_remote = 0; this.combi.CAN_SendMessage(ref frame); return true; } catch (Exception e) { return false; } }
//------------------------------------------------------------------------- /** Sends a 11 bit CAN data frame. @param message CAN message @return success (true/false) */ public override bool sendMessage(CANMessage message) { return MctAdapter_SendMessage(message.getID(), message.getLength(), message.getData()); }