Bluetooth 如何在ctypes中定义套接字结构?

Bluetooth 如何在ctypes中定义套接字结构?,bluetooth,ctypes,winsock2,python-2.5,pythonce,Bluetooth,Ctypes,Winsock2,Python 2.5,Pythonce,我正在尝试使用ctypes在python2.5中创建蓝牙套接字(实际上是PythonCE,没有更高版本可用)。我不知道如何通过ctypes中的套接字(AF\u BT、SOCK\u STREAM、BTHPROTO\u RFCOMM)定义返回的套接字结构 winsock2.h #define WSAAPI FAR PASCAL ... #if INCL_WINSOCK_API_TYPEDEFS typedef SOCKET (WSAAPI * LPFN_SOCKET

我正在尝试使用ctypes在python2.5中创建蓝牙套接字(实际上是PythonCE,没有更高版本可用)。我不知道如何通过ctypes中的
套接字(AF\u BT、SOCK\u STREAM、BTHPROTO\u RFCOMM)
定义返回的套接字结构

winsock2.h
#define WSAAPI                  FAR PASCAL
...
#if INCL_WINSOCK_API_TYPEDEFS
typedef
SOCKET
(WSAAPI * LPFN_SOCKET)(
    IN int af,
    IN int type,
    IN int protocol
    );
#endif /* INCL_WINSOCK_API_TYPEDEFS */
我还定义了WSDATA,如下所示。对C++和cType是新的,我不确定它是否正确。

#typedef struct WSAData {
class WSADATA( Structure ):
    __fields__ = [
        ( 'wVersion', w.WORD),      #  WORD wVersion;
        ('wHighVersion', w.WORD),   #  WORD wHighVersion;
        ('szDescription', w.CHAR * 10 ),   # char szDescription[WSADESCRIPTION_LEN+1]; Null-terminated ASCII string into which the Ws2_32.dll copies a description of the Windows Sockets implementation. The text (up to 256 characters in length) 
        ('szSystemStatus', w.CHAR * 10 ),  # char  szSystemStatus[WSASYS_STATUS_LEN+1]; Null-terminated ASCII string into which the WSs2_32.dll copies relevant status or configuration information.
        ('iMaxSockets', w.USHORT),   #  unsigned short iMaxSockets;  Ignored for Winsock 2.0 
        ('iMaxUdpDg', w.USHORT),     #  unsigned short iMaxUdpDg; Ignored for Winsock 2.0 and later
        ('lpVendorInfo', w.CHAR)     #  char FAR* lpVendorInfo;  ignored for winsock v2 
    ]
#} WSADATA, *LPWSADATA; 

我想使用套接字接口,它似乎比vcom方式更容易控制(我怀疑虚拟com端口是否能在我的手持设备上工作),但winsock结构太复杂了。。。有没有办法把它们包起来,像黑匣子一样传过去。无论如何,这些描述符都不应该在python中操作。

我不知道如何为WinCE构建,也不知道VStudio头文件是否与常规头文件匹配,但我发现您的
WSADATA
定义中存在问题。难道不可能使用Python包装器(套接字模块)而不是复制所有这些结构吗?嗨,这是一个蓝牙套接字,py2套接字模块似乎不支持这种类型。我想我应该试试
SOCKET=c\u void\u p
?我正在创建以下所有结构,然后才能测试它是否有效。。。经过一些测试后,我将更新这个问题。问题是指lpVendorInfo指针吗?我是露西,它被忽略了,我可以得到winsocks版本。另外,我不知道FAR代表什么,这些struct def似乎有很多FAR…SOCKET是
无符号long
(8字节)。如果您愿意,我可以为您定义结构(我将放置C定义和Python包装器,以便您了解如何进行),但这不能仅在答案中的注释中使用。此外,此结构只是第一步,您可能还需要定义更多内容。你可以搜索一个处理BT的Python模块,肯定有。嗨,我试过ulonglong,它不起作用。然后我觉得这个WinCE的东西更具约束性,我尝试了ulong。然后它成功了。现在我可以向打印机发送文本了。仍然存在一些编码和稳定性问题。如果我通过execfile在同一个python实例中运行同一个脚本3次,它总是会使python崩溃,并显示一些windows错误消息。但很接近。谢谢你的帮助。如果你想把它贴出来作为答案,我会接受的,顺便说一句,你是怎么知道它的长度的?这个LPFN_套接字是否被解释为指向套接字文件名或其他内容的长指针?