使用FD_SET并选择串口

时间:2012-09-07 20:39:05

标签: windows sockets serial-port

我是串口编程和套接字的新手,所以请保持温和:)

我在Windows 7上使用Visual Studio 2010.我正在尝试从串行端口接收数据包(插入的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,但我不确定如何修复它。我可以使用什么来传递代表串口的FD_SET,以便select在使用readfds时停止生成错误信息?或者我甚至没有使用这个的正确的邮政编码?

0 个答案:

没有答案