Blue Printer Con
Blue Printer Con
h>
#include <ws2bth.h>
#include <bluetoothapis.h>
#include <iostream>
#include <vector>
#include <string>
#include <windows.h>
struct BluetoothDevice {
std::wstring name;
BLUETOOTH_ADDRESS address;
SOCKADDR_BTH addr_bth;
};
//Winsock initialization
void InitializeWinsock() {
WSADATA wsaData;
exit(1);
}
//Listing Bluetooth devices
HANDLE hRadio;
BLUETOOTH_FIND_RADIO_PARAMS radioParams = {
sizeof(BLUETOOTH_FIND_RADIO_PARAMS) };
if (!hFindRadio || !hRadio) {
return;
BLUETOOTH_DEVICE_SEARCH_PARAMS searchParams = { 0 };
searchParams.dwSize = sizeof(searchParams);
searchParams.hRadio = hRadio;
searchParams.fReturnAuthenticated = TRUE;
searchParams.fReturnRemembered = FALSE;
searchParams.fReturnConnected = TRUE;
BLUETOOTH_DEVICE_INFO deviceInfo = { 0 };
deviceInfo.dwSize = sizeof(deviceInfo);
return;
int index = 0;
do {
BluetoothDevice dev;
dev.name = deviceInfo.szName;
dev.address = deviceInfo.Address;
dev.addr_bth.addressFamily = AF_BTH;
((uint64_t)dev.address.rgBytes[1] << 8) |
(uint64_t)dev.address.rgBytes[0];
devices.push_back(dev);
std::wcout << L"[" << index++ << L"] " << deviceInfo.szName << L" - ";
printf("%02X:%02X:%02X:%02X:%02X:%02X\n",
deviceInfo.Address.rgBytes[5], deviceInfo.Address.rgBytes[4],
deviceInfo.Address.rgBytes[3], deviceInfo.Address.rgBytes[2],
deviceInfo.Address.rgBytes[1], deviceInfo.Address.rgBytes[0]);
} while (BluetoothFindNextDevice(hFind, &deviceInfo));
BluetoothFindDeviceClose(hFind);
CloseHandle(hRadio);
BLUETOOTH_DEVICE_INFO deviceInfo = { 0 };
deviceInfo.dwSize = sizeof(deviceInfo);
deviceInfo.Address = address;
return false;
BLUETOOTH_DEVICE_INFO deviceInfo = { 0 };
deviceInfo.dwSize = sizeof(deviceInfo);
deviceInfo.Address = address;
if (result == ERROR_SUCCESS) {
else {
std::wcerr << L"Pairing failed with error code: " << result << L"\n";
return false;
if (sock == INVALID_SOCKET) {
return INVALID_SOCKET;
closesocket(sock);
return INVALID_SOCKET;
return sock;
else {
//Main function
int main() {
std::vector<BluetoothDevice> devices;
// Initialize Winsock
InitializeWinsock();
ListBluetoothDevices(devices);
if (devices.empty()) {
WSACleanup();
return 1;
}
int choice;
std::cout << "\nEnter the number of the device you want to connect to: ";
WSACleanup();
return 1;
if (IsDevicePaired(devices[choice].address)) {
else {
if (PairWithDevice(devices[choice].address)) {
else {
WSACleanup();
return 1;
}
}
if (sock == INVALID_SOCKET) {
WSACleanup();
return 1;
std::string userInput;
std::cin.ignore();
std::getline(std::cin, userInput);
std::string escposCmd;
SendData(sock, escposCmd);
// Clean up
closesocket(sock);
WSACleanup();
return 0;