Search talk: byte array

 
<< < 1 2 3 4 .. 21 > >> (Page 2 of 21)

0-255 Byte umkehren CODESYS Forge talk (Thread)
0-255 Byte umkehren
Last updated: 2020-08-30

Network Byte Orders CODESYS Forge talk (Thread)
Network Byte Orders
Last updated: 2021-01-12

Byte in String CODESYS Forge talk (Thread)
Byte in String
Last updated: 2006-04-26

bits into Byte CODESYS Forge talk (Thread)
bits into Byte
Last updated: 2022-11-28

High-/Low-Byte vertauschen CODESYS Forge talk (Thread)
High-/Low-Byte vertauschen
Last updated: 2007-09-17

T_x_can_msg & one-byte messages CODESYS Forge talk (Thread)
T_x_can_msg & one-byte messages
Last updated: 2017-07-13

das Bit im Byte CODESYS Forge talk (Thread)
das Bit im Byte
Last updated: 2010-02-17

array table and combo box array multitouch problem CODESYS Forge talk (Thread)
array table and combo box array multitouch problem
Last updated: 2018-04-23

Write one dimensional array into two dimensional array CODESYS Forge talk (Thread)
Write one dimensional array into two dimensional array
Last updated: 2022-02-25

Post by timvh on Configuring a 2's compliment CODESYS Forge talk (Post)
You could create a DUT of the Type Union and add an array of 2 bytes + an Int. Then write the byte values in the array of the Union and read the Int. Or VAR iInt : INT; byHigh : BYTE := 2#1111_1111; byLow : BYTE := 2#1111_1111; END_VAR iInt := TO_INT(byHigh*16#100 + byLow);
Last updated: 2024-09-28

Post by ihatemaryfisher on Sorting array of any-sized structure CODESYS Forge talk (Post)
In my machine's operation, I need to display multiples tables containing arrays of structured variables. The arrays change during operation, and my supervisor has advised me to write a new bubble-sort for each array. I think I can make a function to sort an array of any data type. This was my own project, and I'm a relatively new coder. I want to know the weaknesses in my approach, and a better method, if one exists. As far as I can test, the function accepts an array of a structured variable of any size, and sort it by any VAR in that structure. But it relies heavily on pointers, which I've heard are bad practice? Function call: // SORT BY BYTE-SIZED VAR IF xDoIt[6] THEN FUNBubbleSortSansBuffer( IN_pbySourcePointer := ADR(astArray[1]), // address of first byte in first element of array IN_pbyComparePointer:= ADR(astArray[1].byCompByte), // points to first byte of the comparing variable (variable you sort by) IN_uiStructureSize := SIZEOF(TYPE_STRUCTURE), // size, in bytes, of the structured variable IN_uiCompareSize := SIZEOF(astArray[1].byCompByte), // size, in bytes, of the comparing variable (variable you sort by) diArrayElements := UPPER_BOUND(astArray,1), // number of elements in array IN_xSmallToLarge := xSortOrder // whether to sort by small2large or large2small ); END_IF Function: FUNCTION FUNBubbleSortSansBuffer : BOOL VAR_INPUT IN_pbySourcePointer : POINTER TO BYTE; // points to beginning of array (first byte of first element) IN_pbyComparePointer: POINTER TO BYTE; // points to first byte of the comparing variable (variable you sort by) IN_uiStructureSize : UINT; // size, in bytes, of the structured variable IN_uiCompareSize : UINT; // size, in bytes, of the comparing variable (variable you sort by) diArrayElements : DINT; // number of elements in array IN_xSmallToLarge : BOOL; // whether to sort by small2large or large2small END_VAR VAR j : DINT; // repeat iteration over array until array ends i : DINT; // iterarte over array, swapping when necesary k : DINT; // iterator from 1 to size of structure (stepping 'through' a single element in array) dwSize : DWORD; // internal var for use in MEMUtils.MemCpy(<size>) // FOR SORTING BY BYTE VAR pbySourcePointer : POINTER TO BYTE; pbySourcePointer2 : POINTER TO BYTE; pbyComparePointer : POINTER TO BYTE; pbyComparePointer2 : POINTER TO BYTE; pbyPointerToBuffer : POINTER TO BYTE; // pointer to single byte buffer byBufferByte : BYTE; // single byte buffer END_VAR dwSize := UINT_TO_DWORD(IN_uiStructureSize); // get structure size (number of bytes) pbyPointerToBuffer := ADR(byBufferByte); // assign pointer to address of buffer byte (because MEMUtils.MemCpy requires a pointer input) CASE IN_uiCompareSize OF // depending on the size of the VAR to sort by (current functionality for BYTE and WORD/INT 1: // BYTE (8 BIT) FOR j := 1 TO diArrayElements DO // for number of elements in array FOR i := 1 TO (diArrayElements-1) DO // same thing, but row[i+1] row is included in swap logic pbySourcePointer := IN_pbySourcePointer + dwSize*(i-1); // point at #1 byte in array element[i] pbySourcePointer2 := pbySourcePointer + dwSize; // point at #1 byte in array element[i+1] // NOTE: because of memory locations, each array element is offset from one another by a number of bytes equal to the size of the structure // We can "walk" from array[i] to array[i+1] via steps equal to the size of the structure // e.g., ADR(array[i+1]) == ADR(array[i]) + SIZEOF([array datatype]) pbyComparePointer := IN_pbyComparePointer + dwSize*(i-1); // point to sorting variable in array element[i] pbyComparePointer2 := pbyComparePointer + dwSize; // point to sorting variable in array element[i+1] // using sort order (small -> large/large -> small) IF SEL(IN_xSmallToLarge, (pbyComparePointer2^ > pbyComparePointer^),(pbyComparePointer2^ < pbyComparePointer^)) THEN // This is where it gets tricky. We've identified pointers for the starting bytes of aArray[i] and aArray[i+1] // and we know the size of aArray[i]. We are going to swap individual bytes, one at a time, from aArray[i] and aArray[i+1] // this allows us to use only a single byte var as a buffer or temporary data storage // e.g., consider a structure consisting of a word, a byte, and a string. it is stored like this // |------WORD-------| |--BYTE-| |STRING------...| // astArray[1] == 1000 0100 0010 0001 1100 0011 1010 1010.... etc // astArray[2] == 0001 0010 0100 1000 0011 1100 0101 0101.... etc // performing a single swap (copy into a buffer, etc.) of the first byte of each array element creates this // astArray[1] == 0001 0100 0010 0001 1100 0011 1010 1010.... etc // astArray[2] == 1000 0010 0100 1000 0011 1100 0101 0101.... etc // incrementing the pointer adresses for the swap by 1 and swapping again swaps the next byte in each array element // astArray[1] == 0001 0010 0010 0001 1100 0011 1010 1010.... etc // astArray[2] == 1000 0100 0100 1000 0011 1100 0101 0101.... etc // continuing this from k to SIZEOF(TYPE_STRUCTURE) results in a toally swapped row FOR k := 1 TO IN_uiStructureSize DO // copy single byte[k] of array element 1 to buffer MEMUtils.MemCpy(pbyDest := (pbyPointerToBuffer), pbySrc := (pbySourcePointer+k-1), dwSize := 1); // copy single byte[k] of array element 2 to 1 MEMUtils.MemCpy(pbyDest := pbySourcePointer+k-1, pbySrc := (pbySourcePointer2+k-1), dwSize := 1); // copy buffer to byte[k] array element 2 MEMUtils.MemCpy(pbyDest := (pbySourcePointer2+k-1), pbySrc := pbyPointerToBuffer, dwSize := 1); END_FOR END_IF END_FOR END_FOR
Last updated: 2023-08-17

ARRAY of unknow struct CODESYS Forge talk (Thread)
ARRAY of unknow struct
Last updated: 2017-10-09

TwinCAT ARRAY CODESYS Forge talk (Thread)
TwinCAT ARRAY
Last updated: 2018-08-16

In Array suchen CODESYS Forge talk (Thread)
In Array suchen
Last updated: 2010-12-22

Array Deklaration über Konstante CODESYS Forge talk (Thread)
Array Deklaration über Konstante
Last updated: 2012-07-30

ARRAY [*] OF in PLCopenXML CODESYS Forge talk (Thread)
ARRAY [*] OF in PLCopenXML
Last updated: 2018-10-26

ARRAY beschreiben CODESYS Forge talk (Thread)
ARRAY beschreiben
Last updated: 2008-04-07

ARRAY ALS FESTER SPEICHER CODESYS Forge talk (Thread)
ARRAY ALS FESTER SPEICHER
Last updated: 2009-05-13

Array größe bestimmen. CODESYS Forge talk (Thread)
Array größe bestimmen.
Last updated: 2008-01-05

Increas Array Element CODESYS Forge talk (Thread)
Increas Array Element
Last updated: 2023-06-17

String array corruption CODESYS Forge talk (Thread)
String array corruption
Last updated: 2012-01-31

[2D ARRAY] [FB] CODESYS Forge talk (Thread)
[2D ARRAY] [FB]
Last updated: 2021-07-03

Array declaration with FB_Init CODESYS Forge talk (Thread)
Array declaration with FB_Init
Last updated: 2020-08-21

array CODESYS Forge talk (Thread)
array
Last updated: 2021-04-08

Pointer To Array CODESYS Forge talk (Thread)
Pointer To Array
Last updated: 2021-02-04

<< < 1 2 3 4 .. 21 > >> (Page 2 of 21)

Showing results of 521

Sort by relevance or date