如何使用WriteFile为serialport发送整数作为字符串

时间:2013-08-16 01:28:07

标签: visual-c++ serial-port

我想将一个整数作为字符串缓冲区发送到WriteFile的串行端口。该数据值是传感器的结果,该数据最大值为2个字符。

我试图用itoa转换

例如:

 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;} 

此代码无效。

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

此外,我也尝试过本网站的建议: convert int to string但仍然不起作用。

有没有任何线索可以做到这一点?

1 个答案:

答案 0 :(得分:1)

你没有正确使用itoa,你需要为你的字符串分配空间,你需要提供一个合适的基数(这是你的零除错误发生的地方),最后你需要使用缓冲区,而不是原始a值,作为写入中的缓冲区。

尝试以下方法:

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;
}