How to send integer as a string with WriteFile for serialport

0

I want to send an integer as a string buffer to a serial port with WriteFile. This data value is result from the sensor, this data max has 2 characters.

I have tried to convert with itoa

for example:

 DWORD nbytes;
 int a,b,c;
 a=10;
char *tempa ="";
tempa = itoa(a, tempa,0);
if(!WriteFile( hnd_serial, a, 2, &nbytes, NULL )){MessageBox(L"Write Com Port fail!");return;} 

This code is not working.

Unhandled exception at 0x1024d496 (msvcr100d.dll) in ENVSConfig.exe: 0xC0000094: Integer division by zero.

Also I have tried the suggestion from this website: convert int to string but still does not working to.

Is there any clue to do this?

visual-c++
serial-port
asked on Stack Overflow Aug 16, 2013 by Limavolt • edited Aug 16, 2013 by Preston

1 Answer

1

You are not using itoa properly, you need to allocate space for your string, you need to provide a proper radix (this is where your divide-by-zero error is happening) and finally you need to use the buffer, not your original a value, as the buffer in your write.

Try the following:

DWORD nbytes;
int a,b,c;
a = 10;
char tempa[64];  // Randomly picked 64 characters as the max size
itoa(a, tempa, 10);
if(!WriteFile(hnd_serial, tempa, 2, &nbytes, NULL))
{
    MessageBox(L"Write Com Port fail!");
    return;
} 
answered on Stack Overflow Aug 16, 2013 by Preston

User contributions licensed under CC BY-SA 3.0