掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
シリアル通信でバイト数取得するには? (ID:66509)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは、プログラミング初心者の粉と申します。 現在シリアル通信を勉強しております。 cbInQueでバイト数を取得したいのですが、1バイトしか取得出来ていなく困っています。 受信用プログラムをVistaで起動し、送信用プログラムをXPで起動しています。 送信プログラムで「aaaaa」と入力しても受信プログラムの結果は「aフフフフフフフフフフフフ (1:1)」といった結果です。 なぜ1バイトしか取得出来ていないのかがわかりません。 送信プログラムが悪いのでしょうか? (私の頭が悪いのは間違いないですが。) どうか教えて頂けないでしょうか? /* --- 受信用 --- */ #include <windows.h> #include <iostream> using namespace std; void main(void) { HANDLE hComm; char buff[10]; DWORD dwSize; DWORD dwCount; DWORD dwErrors; COMSTAT ComStat; hComm = CreateFile( "COM7", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 ); if( hComm == INVALID_HANDLE_VALUE ) exit( 1 ); cout << "--> Receive Wait <--\n"; while(1){ ClearCommError(hComm, &dwErrors, &ComStat); dwCount=ComStat.cbInQue;// 1byteしか受信出来てないのはなぜ? if(dwCount > 0){ ReadFile(hComm, buff, dwCount, &dwSize, NULL); cout << buff << "(" << dwCount << ":" << dwSize << ")\n"; break; } } cout << "--> Receive Complete <--\n"; CloseHandle(hComm); } /* --- 送信用 --- */ #include <windows.h> #include <stdio.h> #include <string.h> void main(void) { HANDLE hComm; DWORD size; char ss[20]; hComm = CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 ); if( hComm == INVALID_HANDLE_VALUE ) exit( 1 ); while(1){ printf("Input: Send Data >"); scanf("%s", ss); if(strcmp(ss, "exit") == 0) //exitを入力すると終了 break; WriteFile(hComm, ss, strlen(ss), &size, NULL); } CloseHandle(hComm); }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.