10-21-2015 10:44 AM
1- When I run the examples without changing them, I got this error :
2- I can't use Bus Monitor, because Labwindows says that the LIN ressource is used, so I'm using MuxTrace in spy mode to see the LIN frames, and it works.
3- Yes, and I'm using it in my code. (I have an LDF file)
4- Here my code where I set up the handle:
#define LINCluster "ADCS_LIN_database" #define LINClusterRGB "LDF_RGB" #define MasterRequestFrame "" // "" takes the default value "MasterReq" #define SlaveResponseFrame "" // "" takes the default value "SlaveResp" //. //. //. switch (event) { case EVENT_COMMIT: //Get TABPANEL handle and num GetPanelHandleFromTabPage (panelHandle, MAIN_PANEL_TABPANEL, 1, &DiagtabHandle); //Get parameters from user GetCtrlVal (DiagtabHandle, TABDIAG_OPEN_DIAG_INTERFACE, cValInterface); GetCtrlVal (DiagtabHandle, TABDIAG_OPEN_DIAG_BAUDRATE, cValBaudrate); Fmt(&iValBaudrate,"%i<%s",cValBaudrate); strcpy(LINPort, cValInterface); // NI-XNET: strcat(LINPort,"@nixnet"); //Example : LIN1@nixnet // Add LDF Cluster strcat(LINPort,":"); strcat(LINPort,LINClusterRGB); //Example : LIN1@nixnet:ADCS_LIN_database //strcat(LINPort,LINClusterRGB); //LDF_RGB SetCtrlVal(DiagtabHandle, TABDIAG_TEXT_DB_LIN_LDF, LINPort); //Display LDF DB Source Delay(1); status = ndOpenDiagnosticOnLIN (LINPort, iValBaudrate, NAD, MasterRequestFrame, SlaveResponseFrame, &DiagStruct); CheckError ("ndOpenDiagnosticOnLIN", status, Report_temp);
Thanks on advance
10-21-2015 11:01 AM
I tested somthing : When I run the function ndUDSReadDataByIdentifier with dataIn[8] = {146, 242, 0, 0, 0, 0, 0, 0} as paramter, I'm supposed to send this frame : //HEX : 92, F2, 00, 00, 00, 00, 00, 00 (this frame is reconized by my device.
So when I send that frame,I can see in the MuxTrace tool that the 2 first byte don't change, but the last 6 byte are updated as my parameter table dataIn[].
These 2 first bytes are always equal to 0x01 0x03 what ever I try to send.
I don't see where these byte are initialized.
10-22-2015 04:52 AM
IMPORTANT !
When I send frames, I noticed that the frame identifier is 0x0C and 0x0D !! or I should see 0x3C and 0x3D as identifier
I can't found where I can set up this configuration ! Help please !
10-22-2015 08:47 AM
The last problem (0x0C / 0x0D) was because the spyware were using LIN 1.x and not 2.x
And finally I used the function "ndDiagnosticService" to send and receive all frames I looked for.
I'm a little disappointed that the toolkit has no really LIN Diag functions (except the ndOpenDiagnosticOnLIN function).
ndDiagnosticService I used is a generic function that need to have an array as input of your frame, and another array to get output result.
The general error I get is a pointer problem. Now solved.
The only unpleasant thing that I have not understood is that my software send contineousely 0x3D resquest frames (see pic) and I don't know how to stop that.
I already set up a timer (every 3 seconds) where I send a frame to keep LIN communication. But the thing is that between these frames, I have a resquest frame every 10ms ........
I'm really disappointed because NI didn't developed a personelized LIN Diagnostic .......
Hope that this help someone else.