0

readfileWinCE 環境で CDC デバイスからデータを読み取る機能を使用しようとしています。

BOOL WINAPI ReadFile(
  _In_         HANDLE hFile,
  _Out_        LPVOID lpBuffer,
  _In_         DWORD nNumberOfBytesToRead,
  _Out_opt_    LPDWORD lpNumberOfBytesRead,
  _Inout_opt_  LPOVERLAPPED lpOverlapped
);

のサイズ制限を知りたいですreadbuf。256 バイトのデータのブロックを 100 回送信しています。lpNumberOfBytesReadからのパラメーターはReadFile、最初の試行で 173 バイトを返し、他のすべての 99 回は 0 を返します。私が欠けているものを教えてください。また、「writebuf」のサイズ制限は? 以下は、ポートを開くためのコードです

    BOOL PortOpen()
    {
    Close();

ComPort = INVALID_HANDLE_VALUE;
    COMMTIMEOUTS ct;




ComPort=CreateFile (TEXT("COM1:"), GENERIC_READ | GENERIC_WRITE,
                     0, NULL, OPEN_EXISTING, 0, NULL);



if (ComPort != INVALID_HANDLE_VALUE) {

    dcb.DCBlength = sizeof (dcb);
    GetCommState (hLocal, &dcb);
    dcb.BaudRate = 115200;
    dcb.fParity = FALSE;
    dcb.fNull = FALSE;
    dcb.StopBits = ONESTOPBIT;
    dcb.Parity = NOPARITY;
    dcb.ByteSize = 8;
    SetCommState (ComPort, &dcb);


    ct.ReadIntervalTimeout = 0;
    ct.ReadTotalTimeoutMultiplier = 0;
    ct.ReadTotalTimeoutConstant = 0;
    ct.WriteTotalTimeoutMultiplier = 0;
    ct.WriteTotalTimeoutConstant = 0;
    SetCommTimeouts (hLocal, &ct);

}

リャン

4

2 に答える 2

0

ReadFile 操作のタイムアウトは、SetCommTimeouts API を使用して構成できます。コードがそれを呼び出していないことを確認してください。その場合、返されるバイト数は、設定したさまざまなタイムアウト パラメータによって異なります。

于 2014-03-02T10:43:25.620 に答える