Jonny007-MKD
8c9f78a0a9
Added hbin_to_strhex and dbin_to_strhex ModbusClientCommon.cin Introduced timers to watch for timeouts Enhanced OnModbusReceive Added exception handling Added ModbusReadWriteRegisters and ModbusWriteMasks
81 lines
No EOL
1.5 KiB
Text
81 lines
No EOL
1.5 KiB
Text
/*@!Encoding:1252*/
|
|
|
|
void bin_to_strhex(byte bin[], char result[])
|
|
{
|
|
char hex_str[17] = "0123456789ABCDEF";
|
|
word i;
|
|
word binsz;
|
|
|
|
binsz = elCount(bin);
|
|
if (binsz > 20)
|
|
binsz = 20;
|
|
|
|
for (i = 0; i < binsz; i++)
|
|
{
|
|
result[i * 3 + 0] = hex_str[bin[i] >> 4 ];
|
|
result[i * 3 + 1] = hex_str[bin[i] & 0x0F];
|
|
result[i * 3 + 2] = ' ';
|
|
}
|
|
|
|
if (elCount(bin) > 20) // trailing "..."
|
|
{
|
|
result[56] = '.';
|
|
result[57] = '.';
|
|
result[58] = '.';
|
|
}
|
|
result[binsz * 3 - 1] = 0;
|
|
}
|
|
|
|
void hbin_to_strhex(byte bin[], char result[])
|
|
{
|
|
char hex_str[17] = "0123456789ABCDEF";
|
|
word i;
|
|
word binsz;
|
|
|
|
binsz = elCount(bin);
|
|
if (binsz > 20)
|
|
binsz = 20;
|
|
|
|
for (i = 0; i < binsz; i++)
|
|
{
|
|
result[i * 2 + 0] = hex_str[bin[i] & 0x0F];
|
|
result[i * 2 + 1] = ' ';
|
|
}
|
|
|
|
if (elCount(bin) > 20) // trailing "..."
|
|
{
|
|
result[36] = '.';
|
|
result[37] = '.';
|
|
result[38] = '.';
|
|
}
|
|
result[binsz * 2 - 1] = 0;
|
|
}
|
|
|
|
void dbin_to_strhex(word bin[], char result[])
|
|
{
|
|
char hex_str[17] = "0123456789ABCDEF";
|
|
word i;
|
|
word binsz;
|
|
byte offset;
|
|
|
|
binsz = elCount(bin);
|
|
if (binsz > 20)
|
|
binsz = 20;
|
|
|
|
for (i = 0; i < binsz; i++)
|
|
{
|
|
result[i * 5 + 0] = hex_str[(bin[i] >> 12) & 0x0F];
|
|
result[i * 5 + 1] = hex_str[(bin[i] >> 8) & 0x0F];
|
|
result[i * 5 + 2] = hex_str[(bin[i] >> 4) & 0x0F];
|
|
result[i * 5 + 3] = hex_str[(bin[i] ) & 0x0F];
|
|
result[i * 5 + 4] = ' ';
|
|
}
|
|
|
|
if (elCount(bin) > 20) // trailing "..."
|
|
{
|
|
result[96] = '.';
|
|
result[97] = '.';
|
|
result[98] = '.';
|
|
}
|
|
result[(byte)(binsz * 2.5) - 1] = 0;
|
|
} |