2

私はシリアルポートプログラミングとソケットに不慣れなので、優しくしてください:)

Windows7でVisualStudio2010を使用しています。シリアルポートからパケットを受信しようとしています(リモートデバイスに接続するUSB​​ Digi XStickが挿入されています)。最初にWriteFileを使用して最初のパケットを送信すると、この操作は正常に完了します。selectを呼び出すと、エラー10038「ソケット以外のもので操作が試行されました」が表示されます。

関連するコードは次のとおりです。

char szCodedPort[20];
sprintf(szCodedPort, "\\\\.\\COM%d",3); //manually set for testing purposes
HANDLE fileHandle =  CreateFileA(szCodedPort, 
    GENERIC_READ | GENERIC_WRITE, 
    FILE_SHARE_READ | FILE_SHARE_WRITE, 
    NULL, 
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL, NULL);

fd_set readfds;
int fd;
fd = _open_osfhandle((long)fileHandle, O_RDONLY);
FD_ZERO(&readfds);
FD_SET(fd, &readfds);       

WSAData WSA_Data;
WSAStartup(MAKEWORD(2,2),&WSA_Data);    

res = select(fd,&readfds,NULL,NULL, &waitlen);

WSACleanup();

私の問題はfdにあると思いますが、修正方法がわかりません。selectがreadfdsを使用するときにエラーメッセージの生成を停止するように、シリアルポートを表すFD_SETに渡すために何を使用できますか?それとも私はこれで正しい郵便番号にさえ入っていませんか?

4

0 に答える 0