User Tools

Site Tools


doc:lua_make-your-own-scripts

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
doc:lua_make-your-own-scripts [2014/10/13 18:22] admindoc:lua_make-your-own-scripts [2015/11/15 13:31] – [Miscellaneous Commands] admin
Line 186: Line 186:
  
  
-=== ioInput(file name ,file_extension,message) ===+=== ioInput(file_name ,file_extension,message) ===
  
  
Line 228: Line 228:
  
  
-==== loadbuffer ==== +=== loadbuffer === 
-  loadbuffer(start: longint; VAR filelen: longint;  VAR filename: String; VAR err: integer)+  len, newfilename= loadbuffer(start filelen , file_name , file_extension , message)
  
-Reads the file "filename" into the telegram buffer starting at position "start" by reading "filelen" number of bytes+Reads the file "file_name" into the telegram buffer starting at position "start" by reading "filelen" number of bytes.
  
-The number of bytes read will be returned in "len".+The data source can be defined as explained for the ioInput command. 
 + 
 +The number of bytes read will be returned in "len", a negative value means a load error
  
 The following conditions apply: The following conditions apply:
-  * If the filename is "" (empty), then a file selection window will be opened, from which a file can be selected. The selected filename will be returned in "filename"+  * The selected filename will be returned in "filename"
-  * If len is 0, the whole file will be read. If the length exceeds the telegram length, an error will be raised.+  * If filename is 0, the whole file will be read. If the length exceeds the telegram length, an error will be raised.
  
  
  
  
-==== savebuffer ==== +=== savebuffer === 
-  savebuffer(start: longint; VAR filelen: longint;  VAR filename: String; VAR err: integer)+  len, newfilename = savebuffer(start filelen , file_name , file_extension , message)
  
 Writes the telegram buffer starting at position "start" by reading "filelen" number of bytes into the file "filename" Writes the telegram buffer starting at position "start" by reading "filelen" number of bytes into the file "filename"
  
-The number of bytes written will be returned in "len".+The number of bytes written will be returned in "len", a negative value means a load error
  
 The following conditions apply: The following conditions apply:
-  * If the filename is "" (empty), then a file selection window will be opened, from which a file can be selected. The selected file name will be returned in "filename".+  * The selected file name will be returned in "filename".
   * If len is 0, the whole telegram buffer will be written.    * If len is 0, the whole telegram buffer will be written. 
  
-==== setbuffer ==== +=== setbuffer === 
-  setBuffer(bufferNr : byte; newSize: longint)+  setBuffer(bufferNr newSize )
  
-Changes the actual buffer used to buffer number "buffernr"SKDS supports 10 buffers, counted from 0 to 9. The startup buffer is nr. 0.+Changes the actual buffer used to buffer number "buffernr"OOBD supports 10 buffers, counted from 0 to 9. The startup buffer is nr. 0.
  
-If newsize is <> 0, the old buffer is deleted and new memory with size newmem is allocated. The maximal memsize is 2^31 = 2147483648 bytes+If newsize is <> 0, the old buffer is deleted and new memory with size newmem is allocated
  
  
-==== copyBuffer ==== +=== copyBuffer === 
-  copyBuffer(bufferNr : byte)+  copyBuffer(bufferNr )
  
-Copies the content of buffer nr. "bufferNr" into the actual buffer.+Copies the content of buffer  "bufferNr" into the actual buffer.
  
  
  
  
-==== BlitBuffer ==== +=== BlitBuffer === 
-  BlitBuffer(frombuffer: byte; startpos: longint; topos: longint; blocklen: longint )+  BlitBuffer(frombuffer startpos topos blocklen  )
  
 Copies a memory block  from the buffer "frombuffer" starting at position "startpos" to the actual buffer to position "topos" with the length of "blocklen" bytes. Copies a memory block  from the buffer "frombuffer" starting at position "startpos" to the actual buffer to position "topos" with the length of "blocklen" bytes.
Line 276: Line 278:
 In case the buffer len needs to be bigger, the buffer len is increased accourdingly. In case the buffer len needs to be bigger, the buffer len is increased accourdingly.
  
-==== SetBufferLen ====+=== SetBufferLen ===
  
  
-  SetBufferLen(VAR newSize: longint)+ newSize= SetBufferLen( newSize)
  
 All other buffer commands can increase the 'len' of a buffer, but none of them can make a buffer shorter, except SetBufferLen.  All other buffer commands can increase the 'len' of a buffer, but none of them can make a buffer shorter, except SetBufferLen. 
Line 285: Line 287:
 SetBufferLen sets the 'len' of the current Buffer to 'newSize'. SetBufferLen sets the 'len' of the current Buffer to 'newSize'.
  
-The success of the SetBufferLen - operation is returned in the variable newSize itself as follows:+The success of the SetBufferLen - operation is returned as function result as follows:
  
-^  input value of newSize  ^  return value of newSize  ^+^  input value of newSize  ^  return value   ^
 |  < = 0                    | available size of the buffer in bytes. This can be used to read the real allocated memory size of that buffer  | |  < = 0                    | available size of the buffer in bytes. This can be used to read the real allocated memory size of that buffer  |
 |  1.. available size      | new available size (= requested size)  | |  1.. available size      | new available size (= requested size)  |
Line 295: Line 297:
  
  
-====  Miscellaneous  Commands ====+=== SendBuffer === 
 +Sends the actual buffer 
 + 
 + 
 + 
 +==== Miscellaneous  Commands ==== 
  
 === serDisplayWrite(String) === === serDisplayWrite(String) ===
Line 301: Line 309:
  
 Writes //String// to the build in output console. Writes //String// to the build in output console.
- 
 === dbLookup(db-File , searchstring) === === dbLookup(db-File , searchstring) ===
  
-Searches in the //db-file// for all entries with index //searchstring//. The //db-file// needs to be in the same directory as the Lua- script itself. The //db-file// itself is made by [[tools_oodbcreate|oodbCreate]].+ 
 +Searches in the //db-file// for all entries with index //searchstring//. The //db-file// needs to be in the same directory as the Lua- script itself. The //db-file// itself is made by [[:doc:tools_oodbcreate|oodbCreate]]. 
  
 dbLookup() returns a Lua table dbLookup() returns a Lua table
-   + 
-  myTable = dbLookup("dtc.oodb", "0815")+ 
 +<code> 
 +myTable = dbLookup("dtc.oodb", "0815") 
 +</code> 
  
 //myTable.len// tells the success status: //myTable.len// tells the success status:
-  * if //myTable.len// < 0 then an error has occured 
-  * if //myTable.len// = 0 then //searchstring// has not been found 
-  * if //myTable.len// > 0 then //myTable.len// tells the number of entries found 
  
-When something has been found, than //myTable// contains two sections, //header// and //data//.+ 
 +    * if //myTable.len//  < 0 then an error has occured 
 +    * if //myTable.len//  = 0 then //searchstring//  has not been found 
 +    * if //myTable.len//  > 0 then //myTable.len//  tells the number of entries found 
 + 
 + 
 +When something has been found, than //myTable//  contains two sections, //header//  and //data//. 
  
 The header section is needed in case you don't know in which column your wanted result is stored; you can identify the column by its column header name instead: The header section is needed in case you don't know in which column your wanted result is stored; you can identify the column by its column header name instead:
  
-   col= myTable.header["DTC-Text"] 
-   print (col) 
-   2 
-    
- //myTable.header.size// tells the number of colums in total **without** the first index column, which is always surpressed. 
  
 +<code>
 + col= myTable.header["DTC-Text"]
 + print (col)
 + 2
 +</code>
  
-The //data// section then contains the found data itself, arranged as a two dimensional array, sorted by rows and columns.  
  
-    result=myTable.data[row][column] +//myTable.header.size//  tells the number of colums in total **without**  the first index column, which is always surpressed. 
-   + 
-**ATTENTION**: Although the row and column indexes are expressed as numbers (1,2,3,4..), they are internally represented as string values ("1","2","3","4"...), so to read the result correctly, numeric row and column counters need to be converted to strings first to address the array correctly+ 
 +The //data//  section then contains the found data itself, arranged as a two dimensional array, sorted by rows and columns. 
 + 
 + 
 +<code> 
 +  result=myTable.data[row][column] 
 +</code> 
 + 
 + 
 +**ATTENTION**: Although the row and column indexes are expressed as numbers (1,2,3,4..), they are internally represented as string values (1,2,3,4”…), so to read the result correctly, numeric row and column counters need to be converted to strings first to address the array correctly 
 + 
 + 
 +<code> 
 +  column=3 
 +  row=2 
 +  result=myTable.data[tostring(row)][tostring(column)]) 
 +</code> 
 + 
 + 
 +Here after all a piece of sample code
  
-    column=3 
-    row=2 
-    result=myTable.data[tostring(row)][tostring(column)]) 
-     
-     
- Here after all a piece of sample code 
  
 <code lua> <code lua>
 myTable= dbLookupCall("dtc.oodb","005") myTable= dbLookupCall("dtc.oodb","005")
 + 
 print ("header") print ("header")
 for k,v in pairs (myTable.header) do for k,v in pairs (myTable.header) do
     print (k,"=",v)     print (k,"=",v)
 end end
 + 
 nrOfColumns = myTable.header.size nrOfColumns = myTable.header.size
 nrOfRows = myTable.len nrOfRows = myTable.len
 + 
 print ("Rows x Columns:" ,nrOfRows, nrOfColumns) print ("Rows x Columns:" ,nrOfRows, nrOfColumns)
- +  
 + 
 for row = 1 , nrOfRows , 1 do for row = 1 , nrOfRows , 1 do
   for column = 1 , nrOfColumns, 1 do    for column = 1 , nrOfColumns, 1 do 
-  + 
    print (cy, cx, myTable.data[tostring(row)][tostring(column)])    print (cy, cx, myTable.data[tostring(row)][tostring(column)])
   end   end
 end end
 </code> </code>
 +
  
 === openXCVehicleData(lua table) === === openXCVehicleData(lua table) ===
  
-OOBD can work as VehicleDatasource for [[http://openxcplatform.com/|openXC]], which means OOBD can send datasets to the openXC system (which needs to be installed on the same android device too, obviously). + 
 +OOBD can work as VehicleDatasource for [[http://openxcplatform.com/|openXC]], which means OOBD can send datasets to the openXC system (which needs to be installed on the same android device too, obviously). 
  
 To do so, a lua table is filled with the right indentifiers and correct formated values accourding to the [[https://github.com/openxc/openxc-message-format|OpenXC Message Format Specification]], one value per call. To do so, a lua table is filled with the right indentifiers and correct formated values accourding to the [[https://github.com/openxc/openxc-message-format|OpenXC Message Format Specification]], one value per call.
 +
  
 With that table openXCVehicleData() is called and the data are been transferred to the openXC backbone task for further handling. With that table openXCVehicleData() is called and the data are been transferred to the openXC backbone task for further handling.
  
-  openXCVehicleData({timestamp= 1332794087.675514, name= "longitude", value= -83.237427}) + 
-  +<code> 
 +openXCVehicleData({timestamp= 1332794087.675514, name= "longitude", value= -83.237427}) 
 +</code> 
 + 
 So everything which is understood by openXC can be generated out of a OOBD lua script. So everything which is understood by openXC can be generated out of a OOBD lua script.
  
doc/lua_make-your-own-scripts.txt · Last modified: 2019/04/08 18:43 by admin