【DLL动态链接库】连接TCP和调用读取参数函数&LABVIEW读取成功
一、编写dll
1、新建dll项目PxaeDemoDll.dll
2、添加头文件PxaeDemoDll.h(第一个函数是连接,第二个发送一个读取参数指令)
3、打开PxaeDemoDll.cpp,添加套接字库文件,然后是函数定义
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,把函数添加进去。
5、项目,属性,C/C++,SDL检查,选择否。
6、选择生成dll。
7、编写labview函数
程序预期(设置的采样率是1.25,返回4;设置625,返回3)
2019.4.1