添加一个功能,在 PC 上开发一个上位机软件,实现与 BTStack 通信,考虑使用虚拟串口,网上实现方法很多,需要先安装一个工具把 com 虚拟出来(成对的 com 口),在双方的代码中使用类似于 open 的方式打开 com 口,具体没有去实现。
换成 Socket 通信,比较简单,不需要去虚拟串口,大概实现如下(代码都是在网上 copy 的):
server端:
#include <WinSock2.h>
//#pragma comment(lib,"ws2_32.lib")
...
servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
bind(servSock, (SOCKADDR*)& sockAddr, sizeof(SOCKADDR));
listen(servSock, 20);
clntSock = accept(servSock, (SOCKADDR*)& clntAddr, &nSize);
while(1){
...
send(clntSock, str, strlen(str) + sizeof(char), NULL);
recv(clntSock, szBuffer, MAXBYTE, NULL);
}
closesocket(clntSock);
closesocket(servSock);
client端:
#include <WinSock2.h>
...
clntSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
connect(clntSock, (SOCKADDR*)& sockAddr, sizeof(SOCKADDR));
while(1){
...
send(clntSock, str, strlen(str) + sizeof(char), NULL);
recv(clntSock, szBuffer, MAXBYTE, NULL);
}
closesocket(clntSock);
BTStack 编译中需要添加编译选项 -lws2_32