【DLL动态链接库】连接TCP和调用读取参数函数&LABVIEW读取成功

一、编写dll

1、新建dll项目PxaeDemoDll.dll

2、添加头文件PxaeDemoDll.h(第一个函数是连接,第二个发送一个读取参数指令)

【DLL动态链接库】连接TCP和调用读取参数函数&LABVIEW读取成功

3、打开PxaeDemoDll.cpp,添加套接字库文件,然后是函数定义

【DLL动态链接库】连接TCP和调用读取参数函数&LABVIEW读取成功

SOCKET servSock;//定义一个套接字
short OpenPXDAQ24260()//成功返回0,否则返回1
{
    WSADATA wsaData;
    WSAStartup(MAKEWORD(2, 2), &wsaData);//初始化套接字库
    servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);//初始化套接字

    sockaddr_in sockAddr;//结构体定义
    memset(&sockAddr, 0, sizeof(sockAddr));//每个字节都用0填充
    sockAddr.sin_family = PF_INET;//使用IPv4地址
    sockAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.58");
    sockAddr.sin_port = htons(8910);//端口8910

    int connectFlag=connect(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));//连接
    if (connectFlag == -1)
        return -1;
    return 0;
}

/*定义第二个函数,读取设置的参数——采样率*/

void ReadSample(char &sam)
{
    char SendBuf[8] = { 0 };
    SendBuf[0] = 0xA5;
    SendBuf[1] = 0x5A;
    SendBuf[2] = 0x01;
    SendBuf[3] = 0x02;
    SendBuf[4] = 0x00;
    SendBuf[5] = 0x00;
    SendBuf[6] = 0xFE;
    SendBuf[7] = 0xEF;

    send(servSock, SendBuf, 8, 0);

    char RevBuf[35] = { 0 };
    recv(servSock, RevBuf, 36, 0);
    sam = RevBuf[9];
    closesocket(servSock);
    WSACleanup();
}

4、新建一个def,把函数添加进去。

【DLL动态链接库】连接TCP和调用读取参数函数&LABVIEW读取成功

【DLL动态链接库】连接TCP和调用读取参数函数&LABVIEW读取成功

5、项目,属性,C/C++,SDL检查,选择否。

【DLL动态链接库】连接TCP和调用读取参数函数&LABVIEW读取成功

6、选择生成dll。

【DLL动态链接库】连接TCP和调用读取参数函数&LABVIEW读取成功

7、编写labview函数

程序预期(设置的采样率是1.25,返回4;设置625,返回3)

【DLL动态链接库】连接TCP和调用读取参数函数&LABVIEW读取成功

【DLL动态链接库】连接TCP和调用读取参数函数&LABVIEW读取成功

2019.4.1