http problem 2, please help

Discussion to talk about software related topics only.
Post Reply
jleni
Posts: 15
Joined: Tue Nov 18, 2008 5:50 am

http problem 2, please help

Post by jleni »

I need to create an xml file dynamically. We are using the method you
suggested to pass parameters to a function that is included in webpage.
So we call the function several times.
I have found that if I call the function more than 15 times the page I
receive is not complete. If you pay attention to the XML file, it
finishes with "</modbus>" but this is not present nor the last function
call results.
I have check including some debug messages that the function is indeed
called for every element, but look like that the buffer is not big
enough or somehow the file is not sent completely.
I am attaching so information about the files and what we are using.
Any clue why is this happening? Have you tried to use big or many (+50) dynamic variables?
Best regards

XML file is as follows:
<?xml version ="1.0" encoding="utf-8"?>
<modbus>
<!--VARIABLE GetModbusRegXML(fd, 2) -->
<!--VARIABLE GetModbusRegXML(fd, 4) -->
<!--VARIABLE GetModbusRegXML(fd, 5) -->
<!--VARIABLE GetModbusRegXML(fd, 6) -->
<!--VARIABLE GetModbusRegXML(fd, 11) -->
<!--VARIABLE GetModbusRegXML(fd, 12) -->
<!--VARIABLE GetModbusRegXML(fd, 15) -->
<!--VARIABLE GetModbusRegXML(fd, 16) -->
<!--VARIABLE GetModbusRegXML(fd, 17) -->
<!--VARIABLE GetModbusRegXML(fd, 20) -->
<!--VARIABLE GetModbusRegXML(fd, 21) -->
<!--VARIABLE GetModbusRegXML(fd, 25) -->
<!--VARIABLE GetModbusRegXML(fd, 40) -->
<!--VARIABLE GetModbusRegXML(fd, 42) -->
<!--VARIABLE GetModbusRegXML(fd, 43) -->
<!--VARIABLE GetModbusRegXML(fd, 53) -->
<!--VARIABLE GetModbusRegXML(fd, 54) -->
<!--VARIABLE GetModbusRegXML(fd, 67) -->
<!--VARIABLE GetModbusRegXML(fd, 68) -->
<!--VARIABLE GetModbusRegXML(fd, 69) -->
</modbus>

HtmlVar.h include the line:

const char *GetModbusRegXML(int fd, int reg);

And this is what we have in formcode.cpp

const char *GetModbusRegXML(int fd, int reg)
{
char buffer[255];

siprintf(buffer, "<register>\n"
"<id>%d</id>\n"
"<description>%s</description>\n"
"<value>%d</value>\n"
"</register>\n",
reg, "x", modbusRegister[reg] );

writestring( fd, buffer );

return "\0";
}
greengene
Posts: 164
Joined: Wed May 14, 2008 11:20 am
Location: Lakeside, CA

Re: http problem 2, please help

Post by greengene »

check the return value from writestring.
if in you example, the value isn't strlen(buffer),
you'll need to wait and retry sending the remaining characters.
Post Reply