0

を使用して整数を文字列バッファとしてシリアル ポートに送信したいと考えています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.

また、このウェブサイトからの提案を試しました: int を文字列に変換しますが、まだ機能しません。

これを行う手がかりはありますか?

4

1 に答える 1

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;
} 
于 2013-08-16T04:45:40.193 に答える