Structure to Dword, Dword to structure, using pointers
CODESYS Forge
talk
(Thread)
Structure to Dword, Dword to structure, using pointers
Last updated: 2013-07-03
WORD to TIME (DWORD)
CODESYS Forge
talk
(Thread)
WORD to TIME (DWORD)
Last updated: 2019-10-03
Real to Dword
CODESYS Forge
talk
(Thread)
Real to Dword
Last updated: 2015-03-30
DWORD to BIT Outputs
CODESYS Forge
talk
(Thread)
DWORD to BIT Outputs
Last updated: 2023-06-23
Bit access to DWORD Variable
CODESYS Forge
talk
(Thread)
Bit access to DWORD Variable
Last updated: 2019-12-18
Confusion with Lreal to dword
CODESYS Forge
talk
(Thread)
Confusion with Lreal to dword
Last updated: 2013-12-30
Converting DWORD to WORD
CODESYS Forge
talk
(Thread)
Converting DWORD to WORD
Last updated: 2008-01-15
How to put four bytes into a DWORD
CODESYS Forge
talk
(Thread)
How to put four bytes into a DWORD
Last updated: 2013-01-12
Convert STRING to DWORD for TCP/IP client
CODESYS Forge
talk
(Thread)
Convert STRING to DWORD for TCP/IP client
Last updated: 2022-06-11
syslibfile und dword
CODESYS Forge
talk
(Thread)
syslibfile und dword
Last updated: 2009-09-15
Drei Bytes in ein DWORD packen...
CODESYS Forge
talk
(Thread)
Drei Bytes in ein DWORD packen...
Last updated: 2012-07-30
Zwei WORD Variablen zu DWORD vereinigen?
CODESYS Forge
talk
(Thread)
Zwei WORD Variablen zu DWORD vereinigen?
Last updated: 2009-05-25
DWORD mit Array of BOOL überlagern?
CODESYS Forge
talk
(Thread)
DWORD mit Array of BOOL überlagern?
Last updated: 2006-04-26
DWORD auf Modbusadresse(n) zuweisen
CODESYS Forge
talk
(Thread)
DWORD auf Modbusadresse(n) zuweisen
Last updated: 2008-08-01
Baustein zur Ausgabe eines DWORD
CODESYS Forge
talk
(Thread)
Baustein zur Ausgabe eines DWORD
Last updated: 2014-03-07
SysTime64, shifting between DWORD
CODESYS Forge
talk
(Thread)
SysTime64, shifting between DWORD
Last updated: 2009-03-19
Fehler 4010: "Kann REAL nicht in DWORD konvertieren" ??????
CODESYS Forge
talk
(Thread)
Fehler 4010: "Kann REAL nicht in DWORD konvertieren" ??????
Last updated: 2012-03-01
Is DWORD considered signed or unsigned?
CODESYS Forge
talk
(Thread)
Is DWORD considered signed or unsigned?
Last updated: 2017-07-26
Post by marekxc on Little endian to Float from Modbus RTU
CODESYS Forge
talk
(Post)
Maybe try going back to step one and: Var Reg1: WORD; Reg2: WORD; Reg12: DWORD; Value: REAL; end_var // program Reg1:= 4096; Reg2:= 14884; Reg12:= (reg2 * 65536) + reg1; Value:= DWORD_TO_REAL(Reg12);
Last updated: 2023-12-28
Post by struccc on Bibliothek: floatingpointutils
CODESYS Forge
talk
(Post)
The issue s the byte order typically in this case. Can be especially problematic with floating point numbers - even more tricky if transferred with a word based protocol. It is a peasant way to try out the alternatives, dword order can be a-b-c-d, b-a-d-c, c-d-a-b, d-c-b-a where a is the most significant, d is the least significant byte. So all you need is to swap the bytes in your dword, until you get the expected result. If you don't want to mess writing code for this, I'd recommend CAA_Memory library for that: MEM.ReverseBYTEsInDWORD and MEM.ReverseWORDsInDWORD functions would definitively do the trick. Otherwise, can do like this: VAR dwIn : DWORD := 16#11223344; dwOut : DWORD; rOut : REAL; pIN : POINTER TO BYTE; pOUT : POINTER TO BYTE; END_VAR pIN := ADR(dwIn); //pOUt := ADR(dwOut); pOUt := ADR(rOut); pOut[0] := pIN[3]; pOut[1] := pIN[2]; pOut[2] := pIN[1]; pOut[3] := pIN[0]; Ugly, but does the job...
Last updated: 2024-11-19
Post by ara32 on CODESYS 4 Linux:
CODESYS Forge
talk
(Post)
Hello! I managed to correctly launch CODESYS Developer Studio 3.5.17, almost all functionality works. The only issue remaining is that when connecting to a device and obtaining its public key, the NCryptEncrypt function is called, which is not fully implemented in the DLL source code, resulting in the connection not being established. Currently, the code of this function in the Wine repository looks like this: SECURITY_STATUS WINAPI NCryptEncrypt(NCRYPT_KEY_HANDLE key, BYTE *input, DWORD insize, void *padding, BYTE *output, DWORD outsize, DWORD *result, DWORD flags) { struct object *key_object = (struct object *)key; TRACE("(%#Ix, %p, %lu, %p, %p, %lu, %p, %#lx)\n", key, input, insize, padding, output, outsize, result, flags); if (flags & ~(NCRYPT_NO_PADDING_FLAG | NCRYPT_PAD_OAEP_FLAG | NCRYPT_PAD_PKCS1_FLAG | NCRYPT_SILENT_FLAG)) { FIXME("Flags %lx not supported\n", flags); return NTE_BAD_FLAGS; } if (flags & NCRYPT_NO_PADDING_FLAG || flags & NCRYPT_PAD_OAEP_FLAG) { FIXME("No padding and oaep padding not supported\n"); return NTE_NOT_SUPPORTED; } if (key_object->type != KEY) return NTE_INVALID_HANDLE; return map_ntstatus(BCryptEncrypt(key_object->key.bcrypt_key, input, insize, padding, NULL, 0, output, outsize, result, flags)); } The program crashes due to the NCRYPT_PAD_OAEP_FLAG flag. I'm not proficient in C++, but I attempted to add handling myself, and here's the result: SECURITY_STATUS WINAPI NCryptEncrypt(NCRYPT_KEY_HANDLE key, BYTE *input, DWORD insize, void *padding, BYTE *output, DWORD outsize, DWORD *result, DWORD flags) { struct object *key_object = (struct object *)key; TRACE("(%#Ix, %p, %lu, %p, %p, %lu, %p, %#lx)\n", key, input, insize, padding, output, outsize, result, flags); if (flags & ~(NCRYPT_NO_PADDING_FLAG | NCRYPT_PAD_OAEP_FLAG | NCRYPT_PAD_PKCS1_FLAG | NCRYPT_SILENT_FLAG)) { FIXME("Flags %lx not supported\n", flags); return NTE_BAD_FLAGS; } if (flags & NCRYPT_NO_PADDING_FLAG) { FIXME("No padding not supported\n"); return NTE_NOT_SUPPORTED; } BCRYPT_OAEP_PADDING_INFO oaepInfo = { 0 }; oaepInfo.pszAlgId = BCRYPT_SHA1_ALGORITHM; NTSTATUS status = BCryptEncrypt(key_object->key.bcrypt_key, input, insize, &oaepInfo, NULL, 0, output, outsize, result, flags); if (key_object->type != KEY) return NTE_INVALID_HANDLE; return map_ntstatus(BCryptEncrypt(key_object->key.bcrypt_key, input, insize, padding, NULL, 0, output, outsize, result, flags)); } Now, when calling the connection, it crashes with the error "bcrypt:BCryptEncrypt flags 0x4 not implemented." Can anyone help with enhancing this functionality or at least point me in the right direction?
Last updated: 2024-03-22
Post by struccc on Release SP20 - Changes in behaviour?
CODESYS Forge
talk
(Post)
Dear all, I've just started to migrate some of my ancient projects to SP20. There is one strange error (?) I have noticed so far. In a method call, depending on the circumstances I would like to return reference to an object, or an invalid reference: METHOD Add_EVT_OUT : REFERENCE TO FB_MSG VAR END_VAR IF __ISVALIDREF(refMSG_Entry) THEN Add_EVT_OUT REF= MANAGER.AddMsg_EVT_OUT( refMSG_Entry, _Get_EVT_Message(MSG_EVENT.OUT), _Get_EVT_AddCode(MSG_EVENT.OUT) )^; ELSE Add_EVT_OUT := 0; END_IF So far setting a reference variable to 0, did this. But now, the expression Add_EVT_OUT := 0; gives an error: [ERROR] DB_WTP_370: Add_EVT_ACK MSG_TRIGGER_EXT: C0032: Cannot convert type 'BIT' to type 'REFERENCE TO FB_MSG' Naturally... I can write: Add_EVT_OUT := DWORD#0; But is this the correct way? Is there any constant I could use instead, like "NULL"? Or this is totally wrong and to be avoided?
Last updated: 2024-03-24
How to use matlab to send parameters to codesys
CODESYS Forge
talk
(Thread)
How to use matlab to send parameters to codesys
Last updated: 2018-10-10
Post by sebastianrapi on Bibliothek: floatingpointutils
CODESYS Forge
talk
(Post)
@Strucc.c: thanks very mutch. Yes, I think that was the problem. I tried yesterday a similar function, i have found: IEEE32 in REAL FUNCTION IEEE32_TO_REAL : REAL VAR_INPUT IN:DWORD; END_VAR VAR PTREAL:POINTER TO REAL; END_VAR PTREAL:=ADR(IN); IEEE32_TO_REAL:=PTREAL^; END_FUNCTION REAL in IEEE32 FUNCTION REAL_TO_IEEE32 : DWORD VAR_INPUT IN:REAL; END_VAR VAR PTDWORD:POINTER TO DWORD; END_VAR PTDWORD:=ADR(IN); REAL_TO_IEEE32:=PTDWORD^; END_FUNCTION http://www.oscat.de/community/index.php/topic,357.0.html And this works perfect. Now, the only thing that isn't clear is the libary "FloatingPointUtils, 3.5.17.0 (System)"... For me, the libary doesn't work. But the problem is now solved. Thanks a lot.
Last updated: 2024-11-21
VAR_IN_OUT, POINTER TO and REFERENCE TO
CODESYS Forge
talk
(Thread)
VAR_IN_OUT, POINTER TO and REFERENCE TO
Last updated: 2021-11-16
To search for an exact phrase, put it in quotes. Example: "getting started docs"
To exclude a word or phrase, put a dash in front of it. Example: docs -help
To search on specific fields, use these field names instead of a general text search. You can group with AND
or OR
.