|
|
|
@ -4,11 +4,28 @@
|
|
|
|
|
//
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
#include <UDPTCPNetwork.h>
|
|
|
|
|
#include "tcp.h"
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
|
|
#define SIZE_BUFFER 4096
|
|
|
|
|
|
|
|
|
|
void swapbytes (unsigned char *p1, unsigned char *p2) {
|
|
|
|
|
unsigned char tmp;
|
|
|
|
|
tmp = *p2;
|
|
|
|
|
*p2 = *p1;
|
|
|
|
|
*p1 = tmp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void swapwords (unsigned char *p1, unsigned char *p2) {
|
|
|
|
|
uint16_t tmp;
|
|
|
|
|
|
|
|
|
|
memcpy (&tmp, p2, 2);
|
|
|
|
|
memcpy (p2, p1, 2);
|
|
|
|
|
memcpy (p1, &tmp, 2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int main (int argc, char **argv) {
|
|
|
|
|
unsigned char data[] = { 0x00,0x70,0x00,0x00 , 0x00,0x0B,0x01,0x10 ,
|
|
|
|
|
0x00,0x04,0x00,0x02 , 0x04,0xC0,0x02,0x7B ,
|
|
|
|
@ -27,9 +44,14 @@ int main (int argc, char **argv) {
|
|
|
|
|
|
|
|
|
|
memset (buffer, 0x00, SIZE_BUFFER);
|
|
|
|
|
|
|
|
|
|
if (argc < 3) {
|
|
|
|
|
printf("test-fc16 server port register values...\n");
|
|
|
|
|
printf("test-fc16 localhost 502 16 25.0 0.54 1000.5\n");
|
|
|
|
|
if (argc < 6) {
|
|
|
|
|
printf ("%d\n", argc);
|
|
|
|
|
printf("test-fc16 server port register NOSWAP|WSWAP|BSWAP|BWSWAP values...\n");
|
|
|
|
|
printf("test-fc16 localhost 502 16 NOSWAP 25.0 0.54 1000.5\n");
|
|
|
|
|
printf (" NOSWAP no swapping words\n");
|
|
|
|
|
printf (" WordSWAP swap the 16bit words\n");
|
|
|
|
|
printf (" ByteSWAP swap the Bytes\n");
|
|
|
|
|
printf (" WordByteSWAP swap the bytes and the words\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -43,9 +65,9 @@ int main (int argc, char **argv) {
|
|
|
|
|
if (argc == 3) {
|
|
|
|
|
tcp.Write((char*)data, sizeof(data));
|
|
|
|
|
}
|
|
|
|
|
else if (argc > 4) {
|
|
|
|
|
else if (argc > 5) {
|
|
|
|
|
regstart = atoi (argv[3]);
|
|
|
|
|
regcnt = argc-4;
|
|
|
|
|
regcnt = argc-5;
|
|
|
|
|
|
|
|
|
|
printf ("writing %d floats, offset %d\n", regcnt, regstart);
|
|
|
|
|
|
|
|
|
@ -93,7 +115,7 @@ int main (int argc, char **argv) {
|
|
|
|
|
pos += sizeof(ui8);
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < regcnt; i++) {
|
|
|
|
|
f = (float) atof(argv[i+4]);
|
|
|
|
|
f = (float) atof(argv[i+5]);
|
|
|
|
|
printf ("i: %d string:%s f:%f\n", i, argv[i+4], f);
|
|
|
|
|
|
|
|
|
|
memcpy (&ui16, &f, sizeof(ui16));
|
|
|
|
@ -105,6 +127,12 @@ int main (int argc, char **argv) {
|
|
|
|
|
ui16 = htons(ui16);
|
|
|
|
|
memcpy (buffer+pos, &ui16, sizeof(ui16));
|
|
|
|
|
pos += sizeof(ui16);
|
|
|
|
|
|
|
|
|
|
if (strstr (argv[4], "Word") != NULL) swapwords((unsigned char*)buffer+pos-4, (unsigned char*)buffer+pos-2);
|
|
|
|
|
if (strstr (argv[4], "Byte") != NULL) {
|
|
|
|
|
swapbytes((unsigned char*)buffer+pos-4, (unsigned char*)buffer+pos-3);
|
|
|
|
|
swapbytes((unsigned char*)buffer+pos-2, (unsigned char*)buffer+pos-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tcp.Write((char*)buffer, pos);
|
|
|
|
|