我想将一个整数作为字符串缓冲区发送到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但仍然不起作用。
有没有任何线索可以做到这一点?
答案 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;
}